2013-07-03 3 views
1

У меня есть строка, которая имеет специальные символы и пробелы. Я могу удалить специальные символы, но как я могу это сделать, чтобы сохранить пробелы?удалить все, кроме буквенно-цифровых и пробелов

var a = "dent's dc^e co cbs"; 

var re = /\W/g; 

b = a.replace(re, ''); 

console.log(b); 

Так оно и есть, оно просто удаляет все. И он сломался, когда я пытался добавить (^\s) после W

+0

, который должен работать. – Anirudha

+0

Примечание: '\ s' не соответствует только пробелу, оно соответствует всем пробелам. – Guffa

ответ

3

Вы можете использовать отрицанием класс символов с \w и \s:

var re = /[^\w ]/g; 
  • [^\w] дает такой же эффект, как \W
  • прибавление пустое пространство " " в отрицательном символьном классе, также отрицает пространство.
+0

, так что это буквальное пространство после '\ w'? разве это отрицание не относится к буквенно-цифровым символам также из-за \ w? – 1252748

+0

@thomas. Да, это буквальное пространство. И да, отрицание относится и к буквенно-цифровому символу. И это то, что '\ W' тоже. Он соответствует всем, кроме буквенно-цифровых символов. –

+0

@thomas. Таким образом, это приведет к удалению всего, кроме буквенно-цифровых символов и пробела. –

0

\w не содержит цифр. Используйте это регулярное выражение: /[^0-9A-Za-z ]/ Он соответствует каждому символу, кроме цифр, заглавных и непростых букв и пробела.

Смежные вопросы