2009-02-11 7 views
7

Est-ce que quelqu'un sait quelle est l'expression régulière dans Ruby pour vérifier qu'une adresse e-mail est dans le bon format d'email RFC 2822?Vérification de l'email Ruby (RFC 2822)

Ce que je veux faire est:

string.match(RFC_2822_REGEX) 

où « RFC_2822_REGEX » est l'expression régulière pour vérifier si ma chaîne est valide sous forme de RFC 2882.

+0

duplication possible de [Comment utiliser une expression régulière pour valider une adresse e-mail?] (Http://stackoverflow.com/questions/201323/how-to-use-a-regular-expression-to-validate-an -email-addresses) –

Répondre

1

Essayez this:

+0

ce REGEX permet des emails comme "[email protected]/x.com" et donc "test @ example /////////////////////// //////////x.com " –

2

Sur la base des réponses à this question similaire, vous voudrez peut-être à reconsidérer l'utilisation de cette expression rationnelle.

2

http://theshed.hezmatt.org/email-address-validator

Est-ce que la validation des expressions régulières en fonction des règles de RFC2822 (c'est un monstre d'un regex aussi), il peut aussi vérifier que le domaine est valide dans le DNS (a MX ou enregistrements), et faire un test livraison pour valider que le MX pour le domaine acceptera un message pour l'adresse donnée. Ces deux derniers contrôles sont facultatifs.

12

Vous pouvez utiliser la gemme mail pour analyser une chaîne selon RFC2822 comme ceci: pour une adresse vide

def valid_email(value) 
    begin 
    return false if value == '' 
    parsed = Mail::Address.new(value) 
    return parsed.address == value && parsed.local != parsed.address 
    rescue Mail::Field::ParseError 
    return false 
    end 
end 

Ce vérifie si l'e-mail est fourni, ie renvoie false et vérifie également que l'adresse contient une domaine.

+0

Ceci n'analyse pas les emails valides listés dans RFC3696, y compris" Abc \ @ def @ example.com ". :( – indirect