Kiedy użytkownicy tworzą konto w mojej witrynie, chcę, aby serwer sprawdzał, czy e-maile nie przyjmują wszystkich danych wejściowych.
Wyślę potwierdzenie w taki sposób, aby potwierdzić poprawność uścisku dłoni .
Szukam czegoś prostego, nie najlepszego , ale niezbyt prostego, co niczego nie potwierdza. Nie wiem, gdzie musi znajdować się ograniczenie, ponieważ żadne wyrażenie regularne nie zapewni prawidłowego sprawdzenia poprawności, ponieważ nie można tego zrobić za pomocą wyrażeń regularnych.
Staram się ograniczyć sintax i wizualną złożoność właściwą dla wyrażeń regularnych, ponieważ w tym przypadku każdy będzie poprawny.
Jakiego wyrażenia regularnego mogę użyć, aby to zrobić?
c#
regex
email-validation
eKek0
źródło
źródło
Odpowiedzi:
źródło
Możliwe jest napisanie wyrażenia regularnego, które akceptuje tylko adresy e-mail zgodne ze standardami. Istnieją jednak adresy e-mail, które nie są ściśle zgodne ze standardami, ale nadal działają.
Oto kilka prostych wyrażeń regularnych do podstawowej weryfikacji:
Zawiera znak @:
Zawiera @ i kropkę gdzieś po nim:
Ma co najmniej jeden znak przed @, przed kropką i po niej:
Ma tylko jeden @, co najmniej jeden znak przed @, przed kropką i po niej:
Użytkownik AmoebaMan17 sugeruje tę modyfikację w celu wyeliminowania białych znaków:
Za zaakceptowanie tylko jednego okresu:
źródło
[email protected]
?^ [a-zA-Z0-9 _. + -] + @ [a-zA-Z0-9 -] +. [a-zA-Z0-9 -.] + $
źródło
Myślę, że ta mała poprawka do wyrażenia przez AmoebaMan17 powinna powstrzymać adres od rozpoczynania / kończenia się kropką, a także zatrzymanie wielu kropek obok siebie. Starając się nie komplikować sprawy ponownie, jednocześnie eliminując częsty problem.
Wygląda na to, że działa (ale nie jestem ekspertem od RegEx). Rozwiązuje mój problem z kopiowaniem i wklejaniem przez użytkowników adresów e-mail na końcu zdań kończących się kropką.
tj .: Oto mój nowy adres e-mail [email protected].
źródło
Wybieraj.
Oto ten, który jest zgodny z RFC 2822 sekcja 3.4.1 ...
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
Na wszelki wypadek. :)
źródło