2011-05-20 1 views
2

Possible en double:
What is the best regular expression for validating email addresses?Dans quelle mesure l'expression rationnelle de validation du courrier électronique de Stack Overflow fonctionne-t-elle correctement?

J'ai trouvé cette validation e-mail expression régulière dans le propre code de la page de réponse de débordement de la pile. Est-ce valide/efficace?

function saveEmailNotification(email) { 
    // only post if the email is valid 
    if (!(/^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$/i).test(email)) return; 
... 
} 
+0

(lit regex) Eh oui! L'avez-vous testé? – Blender

+0

il a passé la validation de base! Mais comme je ne suis pas capable de lire regex je ne sais pas ce que le code signifie réellement :( – Sourav

+3

connexes: http://stackoverflow.com/questions/1903356/email-validation-regular-expression/1903368#1903368 – Matt

Répondre

3

Pas besoin de réinventer la roue. De la validation jQuery (voir http://bassistance.de/jquery-plugins/jquery-plugin-validation/):

function validateEmail(value){return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);} 
+2

qui était mignon :) – Sourav

2
/^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$/i 

^ signifie début de la chaîne

[A-Z0-9._%+-]+: une ou plusieurs de ces caractères

@ signifie un @ devrait venir maintenant

[A-Z0-9.-]+ signifie: un ou plusieurs de ces caractères

\. signifie a. devrait maintenant se

[A-Z]{2,4} signifie: 2, 3 ou 4 lettres

$ signifie la fin de chaîne

i est un drapeau indiquant qu'il accepte les minuscules et majuscules.

+0

Est-ce que l'identifiant email supporte% + -? – Sourav

+0

@Sourav: oui, ils le font; De plus, ils prennent en charge d'autres caractères tels que '[{}]' etc. – Piskvor

+0

google, yahoo dit encore 'Seules les lettres, les chiffres, les caractères de soulignement et un point (.) sont autorisés' – Sourav

1

Vous devriez vraiment utiliser RFC-822 regexp conforme à la place - http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

+0

btw qui a codé cette chose? était-ce bill ou mark ou steve? : O: 0 – Sourav

+1

@Sourav, selon les [crédits] (http://www.ex-parrot.com/~pdw/Mail-RFC822-Address/Mail-RFC822-Address.html#credits) le nom est Abigail –

+0

Je plaisantais juste :), mais c'est un code vraiment énorme! – Sourav