Как удалить все, кроме:
буквы, цифры, пробелы, восклицательные знаки, вопросительные знаки из строки?
Важно, чтобы этот метод поддерживал международные языки (UTF-8).
Как удалить все, кроме:
буквы, цифры, пробелы, восклицательные знаки, вопросительные знаки из строки?
Важно, чтобы этот метод поддерживал международные языки (UTF-8).
Вы можете использовать regex
myString.replace(/[^\w\s!?]/g,'');
Это заменит все, кроме символа слова, пробела, восклицательного знака или вопроса.
Класс символов:
\w
означает символ слова, обычно[A-Za-z0-9_]
. Обратите внимание на включение подчеркивания и цифр.
\s
означает символ пробела. Он включает[ \t\r\n]
.
Если вы не хотите подчеркивания, вы можете использовать только [A-Za-z0-9]
.
myString.replace(/[^A-Za-z0-9\s!?]/g,'');
Для символов Unicode вы можете добавить в выражение что-то вроде \u0000-\u0080
. Это исключает все символы в этом диапазоне Unicode. Вам нужно будет указать диапазон для символов, которые вы не хотите удалять. Вы можете увидеть все коды на Unicode Map. Просто добавьте символы, которые вы хотите сохранить, или диапазон символов.
Например:
myString.replace(/[^A-Za-z0-9\s!?\u0000-\u0080\u0082]/g,'');
Это позволит использовать все предыдущие символы, диапазон от \u0000-\u0080
и \u0082
. Он удалит \u0081
.
Оба ответа, опубликованные до сих пор, оставили вопросительный знак. Я бы прокомментировал их, но пока их не хватит.
Дэвид прав, регулярное выражение sachleen будет оставлять символы подчеркивания. rcdmk regex, модифицированный следующим образом, будет делать трюк, хотя, если вы беспокоитесь о международных символах, ситуация может стать намного сложнее.
var result = text.replace(/[^a-zA-Z0-9\s!?]+/g, '');
Это оставит новые строки и вкладки, а также пробелы. Если вы хотите избавиться от новых строк и вкладок, измените их на:
var result = text.replace(/[^a-zA-Z0-9 !?]+/g, '');
text = "A(B){C};:a.b*!c??!1<>[email protected]#3"
result = text.replace(/[^a-zA-Z0-9]/g, '')
Должен возвращать ABCabc123
Сначала мы определяем текст как
A B C a b c 1 2 3
, но со случайными символами установитеresult
как:
text.replace(...)
где параметры:
/.../g
,/.../
:^
означает обратное; не удалять буквы, которые:
a-z
(строчные буквы),a-z
(буквы UPPERCASE) и0-9
(цифры)
g
означает global, для удаления all соответствует не только первое совпадениеВторой параметр - это символ замены, мы устанавливаем его в пустую строку, чтобы он просто сохранял указанную строку. если указано
, он вернет это:
"A B C a b c 1 2 3"
Вы можете попробовать с регулярным выражением, например: var cleaned = someString.replace(/[^a-zA-Z0-9! ]+/g, "");