2009-02-11 4 views
7

Weiß jemand, was der reguläre Ausdruck in Ruby ist zu überprüfen, dass eine E-Mail-Adresse im richtigen RFC 2822 E-Mail-Format ist?Ruby E-Mail-Prüfung (RFC 2822)

Was ich tun möchte, ist:

string.match(RFC_2822_REGEX) 

wo „RFC_2822_REGEX“ den regulären Ausdruck ist zu überprüfen, ob meine Zeichenfolge in gültige RFC 2882 Form ist.

+0

mögliches Duplikat von [Wie verwende ich einen regulären Ausdruck, um eine E-Mail-Adresse zu validieren?] (Http://stackoverflow.com/questions/201323/how-to-use-a-regular-expression-to-validate-an -email-adressen) –

Antwort

1

Versuchen this:

+0

dieses REGEX erlaubt E-Mails wie "[email protected]/x.com" und dafür "test @ example ////////////////////////// //////////xx " –

2

Basierend auf den Antworten auf this ähnliche Frage, sollten Sie für diese Verwendung von Regex zu überdenken.

2

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

regex Validierung funktioniert auf RFC2822 Regeln basiert (es ist ein Monster von einem regulären Ausdruck, auch), es kann auch zu prüfen, ob die Domain in DNS gültig ist (hat MX oder A-Datensätze) und einen Test Lieferung, um zu bestätigen, dass der MX für die Domäne eine Nachricht für die angegebene Adresse akzeptiert. Diese letzten beiden Prüfungen sind optional.

12

Sie können die mail gem jede Zeichenfolge analysieren nach RFC2822 etwa so:

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 

Diese prüft, ob die E-Mail zur Verfügung gestellt, dh kehrt false für eine leere Adresse und überprüft auch, dass die Adresse ein enthält Domain.

+0

Dies analysiert keine gültigen E-Mails, die in RFC3696 aufgeführt sind, einschließlich" Abc \ @ def @ example.com ". :( – indirect