JavaScript Regex, где использовать escape-символы? - PullRequest
15 голосов
/ 01 апреля 2011

Регулярное выражение допускает символы: алфавитно-цифровой, пробел, '-', '_', '&', '()' и '/'

это выражение

[\s\/\)\(\w&-]

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

var programProductRegex = new RegExp([\s\/\)\(\w&-]);

Ответы [ 3 ]

28 голосов
/ 01 апреля 2011

Вы можете использовать синтаксис регулярного выражения:

var programProductRegex = /[\s\/\)\(\w&-]/;

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

Если вы используете конструктор объекта RegExp, вам нужно передать строку,Поскольку обратные слэши - это специальные escape-символы внутри строк JavaScript, и они также являются escape-символами в регулярных выражениях, вам нужно использовать две обратные косые черты для экранирования регулярных выражений внутри строки.Эквивалентный код, использующий строку, будет:

var programProductRegex  = new RegExp("[\\s\\/\\)\\(\\w&-]");

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

OfКонечно первый вариант лучше.Конструктор полезен, когда вы откуда-то получаете строку и хотите сделать из нее регулярное выражение.

var programProductRegex  = new RegExp(userInput);
6 голосов
/ 01 апреля 2011

Если вы используете строку и хотите экранировать символы, такие как (, вам нужно написать \\( (что означает запись обратной косой черты, тогда открывающая скобка => ее экранирование).

Если выиспользуя объект RegExp, вам понадобится только одна обратная косая черта для каждого символа (например, \()

1 голос
/ 01 апреля 2011

Добавьте ваше регулярное выражение с разделителями:

var programProductRegex = /[\s\/)(\w&-]/;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...