Подтвердить что ты не робот

Строка Javascript заменяет регулярное выражение для удаления запрещенных символов

Требуется функция, чтобы отключить набор недопустимых символов в javascript: |&;$%@"<>()+,

Это классическая проблема, которую нужно решить с помощью регулярных выражений, что означает теперь У меня есть 2 проблемы.

Это то, что у меня есть до сих пор:

var cleanString = dirtyString.replace(/\|&;\$%@"<>\(\)\+,/g, "");

Я избегаю специальных символов регулярного выражения с обратным слэшем, но мне трудно понять, что происходит.

Если я попытаюсь использовать одиночные литералы в изоляции, большинство из них, похоже, работают, но как только я сгруппирую их в одном и том же регулярном выражении, в зависимости от порядка, замена будет нарушена.

то есть. это не сработает → dirtyString.replace(/\|<>/g, ""):

Помогите оценить!

4b9b3361

Ответ 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, "");