JavaScript Regex, onde usar caracteres de escape?

O regex permite caracteres que são: alfanumérico, espaço, ‘-‘, ‘_’, ‘&’, ‘()’ e ‘/’

esta é a expressão

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

Eu testei isso em vários testadores on-line e sei que funciona, eu simplesmente não consigo fazê-lo funcionar corretamente no código. Eu recebo erros sysntax com qualquer coisa que eu tento .. alguma sugestão?

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

Você pode usar a syntax da expressão regular:

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

Você usa barras para delimitar o padrão de expressão regular.

Se você usar o construtor do object RegExp, precisará passar uma string. Como barras invertidas são caracteres de escape especiais dentro de strings JavaScript e também são caracteres de escape em expressões regulares, você precisa usar duas barras invertidas para fazer um escape regex dentro de uma string. O código equivalente usando uma string seria então:

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

Todas as barras invertidas que estavam na expressão regular original precisam ser escapadas na sequência para serem interpretadas corretamente como barras invertidas.

Claro que a primeira opção é melhor. O construtor é útil quando você obtém uma string de algum lugar e deseja fazer uma expressão regular dela.

 var programProductRegex = new RegExp(userInput); 

Se você estiver usando uma String e quiser escaping de caracteres como ( , você precisa escrever \\( (significando escrever barra invertida, depois o parêntese de abertura => escapando).

Se você estiver usando o object RegExp , você precisará apenas de uma barra invertida para cada caractere (como \( )

Coloque sua regex com delimitadores:

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