Estoy usando una expresión regular para probar la validez de un nombre. Este es el código:
if (!/^[A-Za-zÀ-Ÿ- ]+$/.test(value)) { doSomething() }Lamentablemente en el navegador me sale este error:
Error de sintaxis no detectado: expresión regular no válida: /^[A-Za-zÀ-È•- ]+$/: rango fuera de orden en la clase de caracteres.
El minified js tiene el código compilado correctamente, pero cargo este archivo .js en un archivo .jsp en mi servidor. ¿Cómo influye esto en la expresión final desordenada con la que terminé?
Parece como si el navegador estuviera interpretando los caracteres especiales en un conjunto de caracteres que no es utf-8 . Asegúrese de que la página web esté configurada para usar la codificación utf-8 .
<meta charset="utf-8">Otra idea para ayudar con las expresiones regulares es usar el escape Unicode . Esto puede ayudar con el problema de codificación independientemente de la codificación.
Puede reemplazar la expresión regular como tal (suponiendo que tenga los códigos de caracteres correctos):
if (!/^[A-Za-z\u{c380}-\u{c5b8}- ]+$/.test(value)) { doSomething(); } Y si quisiera verificar - en su expresión, probablemente escape también ( \- ).
if (!/^[A-Za-z\u{c380}-\u{c5b8}\- ]+$/.test(value)) { doSomething(); }