Перл регулярное выражение для валидации адреса

Наткнулся на регулярное выражение для валидации поля адреса электронных писем. Меня немного позабавило...

Наткнулся на регулярное выражение для валидации поля адреса электронных писем. Меня немного позабавило.

Сие призведение надо искать тут: www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

Приведу кусочек, чтобы все поняли:

The grammar described in RFC 822 is suprisingly complex. Implementing validation with regular expressions somewhat pushes the limits of what it is sensible to do with regular expressions, although Perl copes well:

(?:(?:)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t] )+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:)?[ \t]))*"(?:(?: )?[ \t])*)(?:\.(?:(?:)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:( ?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:)?[ \t]))*"(?:(?:)?[ \t])*))*@(?:(?:)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0 31]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\ ](?:(?:)?[ \t])*)(?:\.(?:(?:)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+ (?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?: (?:)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z |(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:)?[ \t]))*"(?:(?:) ?[ \t])*)*\<(?:(?:)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\ r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:)?[ \t])*)(?:\.(?:(?:)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:) ?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:)?[ \t] )*))*(?:,@(?:(?:)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:)?[ \t])* )(?:\.(?:(?:)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t] )+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:)?[ \t])*))*) *:(?:(?:)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+ |\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:)?[ \t]))*"(?:(?:\r \n)?[ \t])*)(?:\.(?:(?:)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?: )?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:)?[ \t ]))*"(?:(?:)?[ \t])*))*@(?:(?:)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031 ]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\]( ?:(?:)?[ \t])*)(?:\.(?:(?:)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(? :(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(? :)?[ \t])*))*\>(?:(?:)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(? :(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:)? [ \t]))*"(?:(?:)?[ \t])*)*:(?:(?:)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]| \\.|(?:(?:)?[ \t]))*"(?:(?:)?[ \t])*)(?:\.(?:(?:)?[ \t])*(?:[^()<> @,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|" (?:[^\"\r\\]|\\.|(?:(?:)?[ \t]))*"(?:(?:)?[ \t])*))*@(?:(?:)?[ \t] )*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\ ".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:)?[ \t])*)(?:\.(?:(?:)?[ \t])*(? :[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[ \]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000- \031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|( ?:(?:)?[ \t]))*"(?:(?:)?[ \t])*)*\<(?:(?:)?[ \t])*(?:@(?:[^()<>@,; :\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([ ^\[\]\r\\]|\\.)*\](?:(?:)?[ \t])*)(?:\.(?:(?:)?[ \t])*(?:[^()<>@,;:\\" .\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\ ]\r\\]|\\.)*\](?:(?:)?[ \t])*))*(?:,@(?:(?:)?[ \t])*(?:[^()<>@,;:\\".\ [\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\ r\\]|\\.)*\](?:(?:)?[ \t])*)(?:\.(?:(?:)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\] |\\.)*\](?:(?:)?[ \t])*))*)*:(?:(?:)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0 00-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\ .|(?:(?:)?[ \t]))*"(?:(?:)?[ \t])*)(?:\.(?:(?:)?[ \t])*(?:[^()<>@, ;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(? :[^\"\r\\]|\\.|(?:(?:)?[ \t]))*"(?:(?:)?[ \t])*))*@(?:(?:)?[ \t])* (?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\". \[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:)?[ \t])*)(?:\.(?:(?:)?[ \t])*(?:[ ^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\] ]))|\[([^\[\]\r\\]|\\.)*\](?:(?:)?[ \t])*))*\>(?:(?:)?[ \t])*)(?:,\s*( ?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\ ".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:)?[ \t]))*"(?:(?:)?[ \t])*)(?:\.(?:( ?:)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[ \["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:)?[ \t]))*"(?:(?:)?[ \t ])*))*@(?:(?:)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t ])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:)?[ \t])*)(? :\.(?:(?:)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+| \Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:)?[ \t])*))*|(?: [^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\ ]]))|"(?:[^\"\r\\]|\\.|(?:(?:)?[ \t]))*"(?:(?:)?[ \t])*)*\<(?:(?:) ?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\[" ()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:)?[ \t])*)(?:\.(?:(?:) ?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<> @,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:)?[ \t])*))*(?:,@(?:(?:)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@, ;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:)?[ \t])*)(?:\.(?:(?:)?[ \t] )*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\ ".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:)?[ \t])*))*)*:(?:(?:)?[ \t])*)? (?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\["()<>@,;:\\". \[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:)?[ \t]))*"(?:(?:)?[ \t])*)(?:\.(?:(?: )?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z|(?=[\[ "()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:)?[ \t]))*"(?:(?:)?[ \t]) *))*@(?:(?:)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t]) +|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:)?[ \t])*)(?:\ .(?:(?:)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:)?[ \t])+|\Z |(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:)?[ \t])*))*\>(?:( ?:)?[ \t])*))*)?;\s*)

В общем-то  как все ничего, только громоздко:) Желаю удачи рахобраться тем, кому надо:)

 

 

Нет комментариев.
Добавить комментарий
Вам необходимо включить показ изображений в браузере для того чтобы увидеть код

Дайте нам знать, что вы - живой человек. Для нас это важно!
Кликните, если плохо видно

Прежде чем высказать свое мнение, прочитайте пожалуйста: правила

Рейтинг@Mail.ru