Строка Javascript заменяет регулярное выражение для удаления запрещенных символов
Требуется функция, чтобы отключить набор недопустимых символов в javascript: |&;$%@"<>()+,
Это классическая проблема, которую нужно решить с помощью регулярных выражений, что означает теперь У меня есть 2 проблемы.
Это то, что у меня есть до сих пор:
var cleanString = dirtyString.replace(/\|&;\$%@"<>\(\)\+,/g, "");
Я избегаю специальных символов регулярного выражения с обратным слэшем, но мне трудно понять, что происходит.
Если я попытаюсь использовать одиночные литералы в изоляции, большинство из них, похоже, работают, но как только я сгруппирую их в одном и том же регулярном выражении, в зависимости от порядка, замена будет нарушена.
то есть. это не сработает → dirtyString.replace(/\|<>/g, ""):
Помогите оценить!
Ответы
Ответ 1
Вам нужны классы символов. В этом случае вам нужно только беспокоиться о символах ]
, \
и -
(и ^
, если вы поместите его сразу после начала класса символов "[
" ).
Синтаксис: [
символы ]
, где символы - это список с символами.
Пример:
var cleanString = dirtyString.replace(/[|&;$%@"<>()+,]/g, "");
Ответ 2
Я имею тенденцию смотреть на него с обратной точки зрения, которая может быть тем, что вы намеревались:
Какие символы я хочу разрешить?
Это потому, что может быть множество символов, которые вносят в строку как-то ту часть, которую вы не ожидаете.
Например, это разрешает только буквы и числа, удаляя группы недопустимых символов, заменяя их на hypen:
"This¢£«±Ÿ÷could&*()\/<>[email protected]#$%^bad".replace(/([^a-z0-9]+)/gi, '-');
//Result: "This-could-be-bad"
Ответ 3
Вам нужно обернуть их все в класс символов. Текущая версия означает замену этой последовательности символов пустой строкой. Когда они заключены в квадратные скобки, это означает замену любого этих символов пустой строкой.
var cleanString = dirtyString.replace(/[\|&;\$%@"<>\(\)\+,]/g, "");
Ответ 4
Поместите их в скобки []
:
var cleanString = dirtyString.replace(/[\|&;\$%@"<>\(\)\+,]/g, "");