Estoy tratando de permitir caracteres alfanuméricos y algunos caracteres especiales.

var regx = /^[A-Za-z0-9._-\] ]+$/;

Intenté escapar del signo] con la barra diagonal pero aún no funciona. Qué me estoy perdiendo

1
Mary 29 ago. 2014 a las 00:00

2 respuestas

La mejor respuesta

También necesita escapar del carácter -:

/^[A-Za-z0-9._\-\] ]+$/
//------------^

Escapar - no siempre es necesario. Aquí, sin embargo, se utiliza entre corchetes, lo que hace que el motor de JavaScript suponga que está intentando especificar el rango desde _-], lo que provoca un error "Rango fuera de orden en la clase de caracteres".

Tenga en cuenta que /[_-a]/ es una expresión regular válida y coincide con los caracteres _, ` y a (códigos ASCII 95 ... 97); lo cual puede no ser el resultado deseado.

3
Salman A 28 ago. 2014 a las 20:08

Si prueba su expresión regular en un probador de expresiones regulares en línea como regex101, obtendrá el error:

enlace Regex

enter image description here

Tienes que escapar - usando \-:

^[A-Za-z0-9._\-\] ]+$

Por cierto, puedes acortar tu expresión regular a:

^[\w.\-% ]+$

Editar: expresiones regulares agregadas para su comentario:

^[\w.-\]\[ #$>()@{}'"]+$

Demostración de trabajo

1
Federico Piazza 28 ago. 2014 a las 20:47