2009-02-11 11 views
7

Qualcuno sa qual è l'espressione regolare in Ruby per verificare che un indirizzo e-mail sia nel formato e-mail RFC 2822 corretto?Controllo e-mail Ruby (RFC 2822)

Quello che voglio fare è:

string.match(RFC_2822_REGEX) 

dove "RFC_2822_REGEX" è l'espressione regolare per verificare se la mia corda è valida RFC 2882 forma.

+0

possibile duplicato di [Come utilizzare un'espressione regolare per convalidare un indirizzo e-mail?] (Http://stackoverflow.com/questions/201323/how-to-use-a-regular-expression-to-validate-an -email-indirizzi) –

risposta

1

Prova this:

+0

questo REGEX consente email come "[email protected]/x.com" e quindi "test @ esempio /////////////////////// //////////x.com " –

2

Sulla base delle risposte a this domanda simile, si potrebbe voler riconsiderare utilizzando regex per questo.

2

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

Does convalida espressione regolare in base alle regole RFC2822 (è un mostro di una regex, troppo), si può anche verificare che il dominio è valido in DNS (ha MX o record), e fare un test consegna per convalidare che l'MX per il dominio accetterà un messaggio per l'indirizzo indicato. Questi ultimi due controlli sono facoltativi.

12

È possibile utilizzare il mail gemma di analizzare qualsiasi stringa in base alla RFC2822 in questo modo:

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 

Questo controlla se è prevista l'e-mail, ovvero restituisce false per un indirizzo vuota e anche controlla che l'indirizzo contiene un dominio.

+0

Questo non analizza le e-mail valide elencate nella RFC3696, tra cui" Abc \ @ def @ example.com ". :( – indirect

Problemi correlati