Tengo la siguiente expresión regular que coincide con un formato de dirección de correo electrónico:
^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$
Esto se usa para la validación con un formulario que usa JavaScript. Sin embargo, este es un campo opcional. Por lo tanto, ¿cómo puedo cambiar esta expresión regular para que coincida con un formato de dirección de correo electrónico o una cadena vacía?
Desde mi conocimiento limitado de expresiones regulares, creo que \b
coincide con una cadena vacía y |
significa "O", así que intenté hacer lo siguiente, pero no funcionó:
^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$|\b
javascript
regex
email-validation
string
Brusco
fuente
fuente
Respuestas:
Para hacer coincidir
pattern
o una cadena vacía, useExplicación
^
y$
son el principio y el final de las anclas de cadena respectivamente.|
se utiliza para denotar alternativas, por ejemplothis|that
.Referencias
En
\b
\b
en la mayoría de los sabores es un ancla de "límite de palabras". Es una coincidencia de ancho cero, es decir, una cadena vacía, pero solo coincide con esas cadenas en lugares muy específicos , es decir, en los límites de una palabra.Es decir,
\b
se ubica:\w
y\W
(cualquier orden):^
y\w
\w
\w
y$
\w
Referencias
Sobre el uso de expresiones regulares para hacer coincidir direcciones de correo electrónico
Esto no es trivial según la especificación.
Preguntas relacionadas
fuente
Una alternativa sería colocar su expresión regular entre paréntesis que no capturan. Luego, haga que esa expresión sea opcional usando el
?
calificador, que buscará 0 (es decir, una cadena vacía) o 1 instancias del grupo no capturado.Por ejemplo:
En su caso, la expresión regular se vería así:
¡No es
|
necesario el operador "o"!Aquí está la documentación de Mozilla para la sintaxis de expresiones regulares de JavaScript.
fuente
No estoy seguro de por qué querría validar una dirección de correo electrónico opcional, pero le sugiero que use
sentido
^$ empty string | or ^ beginning of string [^@\s]+ any character but @ or whitespace @ [^@\s]+ $ end of string
No detendrá los correos electrónicos falsos de todos modos y de esta manera no detendrá las direcciones válidas.
fuente
\ b coincide con el límite de una palabra. Creo que puedes usar ^ $ para una cadena vacía.
fuente