Строка Javascript заменяется на регулярное выражение для удаления недопустимых символов - PullRequest
49 голосов
/ 23 сентября 2010

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

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

Это то, что у меня так далеко:

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

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

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

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

Помощь оценена!

Ответы [ 4 ]

83 голосов
/ 23 сентября 2010

Вам нужны классы символов . При этом вам нужно беспокоиться только о символах ], \ и -^, если вы размещаете их сразу после начала класса символов "[").

Синтаксис: [ символов ], где символов - список с символами.

Пример:

var cleanString = dirtyString.replace(/[|&;$%@"<>()+,]/g, "");
74 голосов
/ 28 января 2014

Я склонен смотреть на это с обратной точки зрения, что может быть тем, что вы намеревались:

Какие символы я хочу разрешить?

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

Например, этот позволяет только буквы и цифры, удаляя группы недопустимых символовзаменив их гипеном:

"This¢£«±Ÿ÷could&*()\/<>be!@#$%^bad".replace(/([^a-z0-9]+)/gi, '-');
//Result: "This-could-be-bad"
5 голосов
/ 23 сентября 2010

Поместите их в скобки []:

var cleanString = dirtyString.replace(/[\|&;\$%@"<>\(\)\+,]/g, "");
5 голосов
/ 23 сентября 2010

Вы должны обернуть их всех в класс персонажа.Текущая версия означает заменить эту последовательность символов пустой строкой.Если заключить в квадратные скобки, это означает, что любой этих символов следует заменить пустой строкой.

var cleanString = dirtyString.replace(/[\|&;\$%@"<>\(\)\+,]/g, "");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...