2009-02-11 2 views
7

Кто-нибудь знает, что означает регулярное выражение в Ruby, чтобы проверить адрес электронной почты в правильном формате электронной почты RFC 2822?Проверка почты на Ruby (RFC 2822)

То, что я хочу сделать, это:

string.match(RFC_2822_REGEX) 

где «RFC_2822_REGEX» является регулярное выражение для проверки, если моя строка в действительном RFC 2882 форме.

+0

Возможный дубликат [Как использовать регулярное выражение для проверки адресов электронной почты?] (Http://stackoverflow.com/questions/201323/how-to-use-a-regular-expression-to-validate-an -email-addresses) –

ответ

1

Попробуйте this:

+0

этот REGEX позволяет использовать электронные письма типа "[email protected]/x.com" и поэтому "test @ example /////////////////////// //////////x.com " –

2

на основе ответов на this подобный вопрос, вы можете пересмотреть, используя регулярное выражение для этого.

2

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

ли проверки регулярных выражений на основе правил RFC2822 (это монстр из регулярных выражений, тоже), можно также проверить, что домен является действительным в DNS (имеет MX или A записи), и сделать тест чтобы подтвердить, что MX для домена будет принимать сообщение для указанного адреса. Эти последние две проверки являются необязательными.

12

Вы можете использовать mail камень разобрать любую строку в соответствии с RFC2822, как так:

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 

Проверяется, если обеспечивается электронная почта, то есть возвращает false для пустого адреса, а также проверяет, что адрес содержит домен.

+0

Это не анализирует действительные электронные письма, перечисленные в RFC3696, включая" ​​Abc \ @ def @ example.com ". :( – indirect

Смежные вопросы