Проверка мыла на валидность…
Нужно ли писать такие регулярные выражения (6Кб, между прочим) [ <<> ] или проще переписать на какие-нибудь конечные автоматы? И вообще, такой regexp без форматирования это ужасно. Тот же Перл поддерживает расширенный синтаксис, где разрешено форматирование и комментирование.
Это пример из книги «Mastering Regular Expressions» (от O’Reilly, есть и русский перевод). Для оптимизации по скорости насколько я понял развернули достаточно сложный регексп до такого состояния.
Комментарий для cujo:
Думаю, его нужно оставить как пример. И не использовать.
я савсем тупею…
и что если я напишу в поле bolk@exler.ru
то это будет невалидный адрес?
соль где?
и эта… пока писал…
оказывается что учкудук = exreler
Комментарий для zarr:
почему не валидный?
тогда другой вопрос:
зачем нужна проверка валидности адреса? ;)
Комментарий для zarr:
чтобы меньше модератору потом потеть.
Так он там и оставлен как пример. В самом конце, как приложение. И пожелания хорошо провести время (при анализе ;), если я помню правильно. В книге есть разделы описывающие очень глубоко RE-движки. Автор этим примером показал саму возможность оптимизации по скорости в терминах самих регулярных выражений. И выражение это генерила машина и выполняет его тоже машина. А впечатляются люди…
Там фенька в том, что изза премудростей RFC даже очень красивое Perl-выражение с коментариями выглядит достаточно сурово. Думаю и его мало кто использует в повседневной жизни. 99% проверяют «собаку» и точки.
Комментарий для cujo:
Да, но в сабжевом топике используют именно этот пример. В реальной жизни. Вот в чём кошмар!
Нет, конечно, такое писать в 99% случаев не нужно. Но если я правильно понял, о чем в этом регэкспе речь, то автомат будет в несколько раз короче.
Прочитать, что ли rfc… :) И написать автомат. Или ну его, а?
Комментарий для A!e%:
Да ну его :) Впрочем, если напишешь — многие скажут «спасибо». :)
Почитал RFC. Возникла куча вопросов. Например, в РФЦ указано, что
<i>address = mailbox/group </i>
а этот регэксп учитывает только часть address, или и group тоже. Ну, и подобные вопросы.
Никто не расскажет, где бы эту книжицу поиметь или хотя бы главу, где этот РЕ строится. Самому разобрать можно, но зачем?
Комментарий для A!e%:
Как где? Заходи во всякие http://www.ozone.ru / http://www.bolero.ru
2A!e%
«Приложение Б. Программа поиска адресов электронной почты.» Стр. 340-342.
Кстати, есть прекрасный скрипт проверки валидности на php.spb.ru
2A!e%
Указано, естественно, в русском переводе.