JavaScript Regex, где использовать escape-символы?

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

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

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

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

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

Ответы

Ответ 1

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

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

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

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

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

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

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

var programProductRegex  = new RegExp(userInput);

Ответ 2

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

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

Ответ 3

Примените регулярное выражение с разделителями:

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