удалить символы, которые не разрешены при использовании JavaScript? - PullRequest
0 голосов
/ 22 июня 2011

Я создаю тщеславных URL , и я хочу разрешить только пользователям иметь 'a-z', 'A-Z', '0-9, '.', ' ', '-', '_' в своих URL.

Поэтому, учитывая строку, я хотел бы удалить все символы, которые не входят в эту группу.

Каков наилучший способ сделать это?

Первоначально я перебирал строку и затем проверял, был ли символ в этой строке.

Но это, очевидно, не очень эффективно ...

Ответы [ 2 ]

4 голосов
/ 22 июня 2011
str = str.replace(/[^\w\s.-]/g,'');

Пример: http://jsfiddle.net/6Efc5/1/

Это регулярное выражение, которое соответствует всему , а не в наборе [^] в глобальном масштабе, и заменяет его напустая строка:

  • \w буквенно-цифровое и подчеркивание
  • - тире
  • \s пробел
  • . точка

РЕДАКТИРОВАТЬ: Поскольку я был в наборе символов, мне действительно не нужно было избегать . и -.Исправлено.

EDIT2: Как отмечено @ Hailwood , \s будет соответствовать нескольким типам пробельных символов.Чтобы разрешить только символ ' ', а не другие символы, такие как символы табуляции или новой строки, замените \s на простой пробел.

0 голосов
/ 22 июня 2011

Это будет соответствовать любым символам, которых нет в вашем списке: [^a-z0-9. \-_], а затем заменить их пустыми.

myString.replace(/[^a-z0-9. \\-_]/gi, "")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...