Encontré mucha validación de correo electrónico Regex en SO, pero no encontré ninguna que acepte una cadena vacía. ¿Es esto posible solo a través de Regex? ¿Acepta cadena vacía o solo correo electrónico? Quiero tener esto solo en Regex.
Encontré mucha validación de correo electrónico Regex en SO, pero no encontré ninguna que acepte una cadena vacía. ¿Es esto posible solo a través de Regex? ¿Acepta cadena vacía o solo correo electrónico? Quiero tener esto solo en Regex.
Respuestas:
Este patrón de expresiones regulares coincidirá con una cadena vacía:
^$
Y esto coincidirá (groseramente) con un correo electrónico o una cadena vacía:
(^$|^.*@.*\..*$)
^
, por lo que efectivamente está buscando un correo electrónico o nada en el medio de una cadena. Para esto (email_regex)?
es más adecuado.
^$
no funciona, pero ^(?!.)
sí: [ ^
inicio de cadena, (?!)
búsqueda .
coincidencia de cadena vacía o correo electrónico
(^$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)
coincidencia de cadena vacía o correo electrónico, pero también coincide con cualquier cantidad de espacio en blanco
(^\s*$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)
ver más sobre el regex de correspondencia de correo electrónico en sí:
No haga coincidir un correo electrónico con una expresión regular. Es extremadamente feo, largo y complicado y su analizador de expresiones regulares probablemente no pueda manejarlo de todos modos. Intenta encontrar una rutina de biblioteca para unirlos. Si solo quieres resolver lo práctico problema de hacer coincidir una dirección de correo electrónico (es decir, si desea un código incorrecto que generalmente funciona), use el enlace regular-expressions.info que otra persona envió.
En cuanto a la cadena vacía, ^$
es mencionada por varias personas y funcionará bien.
esto resolverá, aceptará una cadena vacía o exactamente una identificación de correo electrónico
"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
Prefiero /^\s+$|^$/gi
unir espacios vacíos y vacíos.
console.log(" ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));
Si lo está utilizando dentro de rieles: validación de registro activo puede establecer
allow_blank: true
Como:
validates :email, allow_blank: true, format: { with: EMAIL_REGEX }