Lecții din modul (1/4)
Validarea unui e-mail
Validarea unui e-mail „corect” este o problemă mult mai grea decât pare: RFC 5322 este un monstru. În practică, alegem un model suficient de bun care acceptă cazurile comune și le respinge pe cele evident greșite.
Pattern: ^[\w.+-]+@[\w-]+(?:\.[\w-]+)+$[\w.+-]+-- parte locală: litere, cifre,_,.,+,-.@-- separator.[\w-]+(?:\.[\w-]+)+-- domeniu + cel puțin un TLD separat de..
Ce acceptă: mario.rossi@example.com, foo+bar@sub.example.co.uk,
user_123@test-domain.io.
Ceea ce respinge: mario@, @example.com, mario@example (fără TLD), spații.
Compensații
Modelul de mai sus nu acceptă:
- Șiruri ghilimele
"strange (things)"@example.com(RFC le permite). - Domenii cu caractere Unicode (
\u00fcber@m\u00fcnchen.de). - TLD-uri foarte lungi care nu trec de
\w(de exemplu, cele internaționalizate).
Dacă aveți nevoie de ele, extindeți clasa la \p{L} cu indicatorul u sau delegați unui
bibliotecă de specialitate.
Compensații și cele mai bune practici pentru validarea e-mailului
Nicio regex nu poate garanta că o adresă de e-mail există cu adevărat. Tiparele prea complexe degradează performanța și exclud domenii neobișnuite, dar valide. Este mai bine să utilizați un model de validare simplu pentru a respinge greșelile evidente și a trimite un cod de verificare.
Încearcă
Recunoașteți fiecare e-mail din text. Utilizați un model simplu: litere/cifre/puncte înainte de @, domeniul cu cel puțin un punct.
Afișează indiciu
Extindeți partea locală la [\\w.+-]+ și domeniul la [\\w-]+\\.[\\w.-]+ pentru a accepta mai multe TLD-uri.
Soluție disponibilă după 3 încercări
Exercițiu de revizuire
Capturați domeniul (partea de după @) al fiecărui e-mail ca grup numit „dominio”.
Afișează indiciu
Înfășurați partea de domeniu într-un grup numit: (?<dominio>[\\w.-]+).
Soluție disponibilă după 3 încercări
Provocare suplimentară
Find the domain part of an email (everything after `@`), excluding the `@` sign using lookbehind.
Afișează indiciu
Utilizați o privire pozitivă în urmă (?<=@) în fața clasei de caractere de domeniu.
Soluție disponibilă după 3 încercări