Tengo el siguiente patrón de expresiones regulares en un campo de entrada HTML, que se supone que contiene una dirección de correo electrónico:
<input type="text" pattern="^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,4})+$" /><br>Además, tengo la misma expresión regular en un backend Express (JavaScript) usando lo siguiente:
var re-email = new RegExp("^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,4})+$") if (!re-email.test(email)) { validation = false }Aunque las expresiones regulares son exactamente iguales, una entrada de prueba específica se evalúa como verdadera en el front-end mientras que como falsa en el back-end.
¿Por qué es esto?
Solución (encontrada después de la publicación inicial) :
En lugar de usar "nueva expresión regular" (que no funciona) como se indicó anteriormente, incluya la expresión regular dentro de las barras inclinadas como se muestra a continuación (que funciona).
var re-email = /^\w+([.-]?\w+) @\w+([.-]?\w+) (.\w{2,4})+$/
Probablemente no sea la respuesta que busca (no es específica de vue.js) ...
La validación de la entrada de la dirección de correo electrónico generalmente debe completarse así:
<input type="email" name="" value="" required />Especificar el "tipo" correcto en un campo de entrada también ajusta los teclados de entrada en los dispositivos móviles para facilitar la entrada de una dirección de correo electrónico.
Su expresión regular está mal escrita y conduce a un "retroceso catastrófico", además de que en realidad no admite direcciones de correo electrónico válidas.
La validación de la dirección de correo electrónico es generalmente compleja, consulte esta respuesta y la pregunta asociada: https://stackoverflow.com/a/201378/406712
También puede encontrar la expresión regular equivalente de validación de dirección de correo electrónico HTML en la especificación HTML: https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address
También tenga en cuenta que no pudo escapar de los caracteres en la cadena, siendo la primera instancia \w que sin escapar de \ aparecerá simplemente como w .
Escapó de la cadena más así:
'/^\\w+([.-]?\\w+)@\\w+([.-]?\\w+)(.\\w{2,4})+$/'