Znalazłem wiele sprawdzania poprawności adresu e-mail Regex w SO, ale nie znalazłem żadnego, który zaakceptuje pusty ciąg. Czy jest to możliwe tylko dzięki Regex? Akceptujesz pusty ciąg znaków lub tylko e-mail? Chcę mieć to tylko na Regex.
Znalazłem wiele sprawdzania poprawności adresu e-mail Regex w SO, ale nie znalazłem żadnego, który zaakceptuje pusty ciąg. Czy jest to możliwe tylko dzięki Regex? Akceptujesz pusty ciąg znaków lub tylko e-mail? Chcę mieć to tylko na Regex.
Odpowiedzi:
Ten wzorzec wyrażenia regularnego będzie pasował do pustego ciągu:
^$
I to dopasuje (z grubsza) wiadomość e-mail lub pusty ciąg:
(^$|^.*@.*\..*$)
^
, w których faktycznie szukasz wiadomości e-mail lub niczego w środku ciągu. Do tego (email_regex)?
lepiej się nadaje.
^$
nie działa, ale ^(?!.)
działa: [ ^
początek ciągu, (?!)
ujemne .
pasujący pusty ciąg lub adres 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)$)
dopasowanie pustego ciągu znaków lub adresu e-mail, ale także dopasowanie dowolnej ilości białych znaków
(^\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)$)
zobacz więcej na temat samego wyrażenia regularnego dopasowywania adresu e-mail:
Nie dopasowuj e-maila do wyrażenia regularnego. Jest wyjątkowo brzydki, długi i skomplikowany, a parser wyrażeń regularnych prawdopodobnie i tak sobie z tym nie poradzi. Spróbuj znaleźć procedurę biblioteczną do ich dopasowania. Jeśli chcesz tylko rozwiązać praktyczny problem związany z dopasowaniem adresu e-mail (to znaczy, jeśli chcesz uzyskać zły kod, który (zwykle) działa), użyj linku regular-expressions.info przesłanego przez kogoś innego.
Jeśli chodzi o pusty ciąg, ^$
jest wspominany przez wiele osób i będzie działał dobrze.
to rozwiąże, przyjmie pusty ciąg lub dokładny identyfikator e-mail
"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
Wolę /^\s+$|^$/gi
dopasowywać puste i puste przestrzenie.
console.log(" ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));
Jeśli używasz go w railsach - możesz ustawić aktywną walidację rekordu
allow_blank: true
Tak jak:
validates :email, allow_blank: true, format: { with: EMAIL_REGEX }