Usted puede utilizar la sintaxis de expresiones regulares:
var programProductRegex = /[\s\/\)\(\w&-]/;
Se utilizan barras inclinadas para delimitar el patrón de expresión.
Si utiliza el constructor de objetos RegExp, debe pasar una cadena. Como las barras diagonales inversas son caracteres de escape especiales dentro de cadenas de JavaScript y también son caracteres de escape en expresiones regulares, debe usar dos barras diagonales inversas para realizar un escape de expresiones regulares dentro de una cadena. El código equivalente utilizando una cadena sería entonces:
var programProductRegex = new RegExp("[\\s\\/\\)\\(\\w&-]");
Todas las barras invertidas que se encontraban en la expresión regular originales deben ser escapado en la cadena de interpretarse correctamente como barras invertidas.
Por supuesto, la primera opción es mejor. El constructor es útil cuando obtienes una cadena de algún lugar y quieres hacer una expresión regular de ella.
var programProductRegex = new RegExp(userInput);
No hay necesidad de escapar paréntesis en una clase de caracteres. es decir, use: '/ [- \ s \ /() \ w &] /' y recuerde que un guion debe ser escapado, excepto al principio o al final de la clase. Consulte: [regular-expressions.info] (http://www.regular-expressions.info/) para obtener un excelente tutorial. – ridgerunner
Noté en el archivo jQuery.uni-form.js que las barras diagonales internas dentro de una clase de caracteres no se están escapando, pero el código funciona bien. ¿Es posible que el escape de barras diagonales en una clase de personaje sea opcional? Me gustaría saber en beneficio del paquete de Javascript de TextMate, también utilizado por Sublime Text 2. –
@ScottLahteine Creo (nunca encontré documentación sobre esto) que solo en los literales RegEx '/ slashes \/must /' escapé . Cuando se utiliza el constructor 'RegExp', no se debe haber escapado – Sebastian