Ho trovato molta convalida della posta elettronica Regex in SO ma non ne ho trovate nessuna che accetti una stringa vuota. Questo è possibile solo attraverso Regex? Accettare una stringa vuota o solo e-mail? Voglio avere questo solo su Regex.
Ho trovato molta convalida della posta elettronica Regex in SO ma non ne ho trovate nessuna che accetti una stringa vuota. Questo è possibile solo attraverso Regex? Accettare una stringa vuota o solo e-mail? Voglio avere questo solo su Regex.
Risposte:
Questo modello regex corrisponderà a una stringa vuota:
^$
E questo corrisponderà (rozzamente) a un'email o a una stringa vuota:
(^$|^.*@.*\..*$)
^
, dove effettivamente stai cercando un'email o niente nel mezzo di una stringa. Per questo (email_regex)?
è più adatto.
^$
non funziona, ma ^(?!.)
funziona: [ ^
inizio stringa, (?!)
lookahead negativo, .
qualsiasi carattere - escluso il linefeed]
corrispondenza stringa vuota o e-mail
(^$|^[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)$)
corrispondenza stringa vuota o e-mail ma anche qualsiasi quantità di spazio bianco
(^\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)$)
vedere di più sulla regex di corrispondenza e-mail stessa:
Non abbinare un'e-mail a una regex. È estremamente brutto, lungo e complicato e il tuo parser regex probabilmente non può gestirlo comunque. Prova a trovare una routine di libreria per abbinarli. Se vuoi solo risolvere il problema pratico della corrispondenza di un indirizzo e-mail (ovvero, se vuoi un codice errato che accade (di solito) funziona), usa il link regular-expressions.info inviato da qualcun altro.
Per quanto riguarda la stringa vuota, ^$
è menzionata da più persone e funzionerà bene.
questo risolverà, accetterà una stringa vuota o esatterà un ID email
"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
Preferisco /^\s+$|^$/gi
abbinare spazi vuoti e vuoti.
console.log(" ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));
Se lo si utilizza su rotaie, è possibile impostare la convalida di activerecord
allow_blank: true
Come:
validates :email, allow_blank: true, format: { with: EMAIL_REGEX }