Ответ 1
Вы можете использовать синтаксис регулярных выражений:
var programProductRegex = /[\s\/\)\(\w&-]/;
Вы используете прямую косую черту, чтобы разграничить шаблон регулярного выражения.
Если вы используете конструктор объектов RegExp, вам нужно передать строку. Поскольку обратные косые черты являются особыми escape-символами внутри строк JavaScript, и они также являются символами escape-символов в регулярных выражениях, вам нужно использовать две обратные косые черты для выполнения выведения регулярных выражений внутри строки. Тогда эквивалентный код с использованием строки будет:
var programProductRegex = new RegExp("[\\s\\/\\)\\(\\w&-]");
Все обратные косые черты, которые находились в исходном регулярном выражении, должны быть экранированы в строке, чтобы правильно интерпретироваться как обратную косую черту.
Конечно, первый вариант лучше. Конструктор полезен, когда вы получаете строку откуда-то и хотите сделать из нее регулярное выражение.
var programProductRegex = new RegExp(userInput);