Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[98.82.140.17] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте, Господа!
Я в регулярках совсем темный, но встала задачка проверять вводимый email на валидность. Тема избитая со страшной силой, однако, толкового решения не увидел, кроме проверки на наличие '@' в строке В общем, поковырял я инет и... Если хочешь хорошо - сделай сам! /\w+_*-*\.?\w+@\w+_?\.*-?\w*\.?\w*\.\w{2,9}/ Это мое изобретение. Можете что-то предложить для оптимизации, но без существенного усложнения? Разумеется, на панацею не претендую. Нас избавила от панацеи RFC822. Впрочем... решение предложено! Честно скажу: не обладая некоторым опытом сообразить что-то стоящее, чертовски тяжело! Для упрощения разработки сделал onlain калькулятор для регулярок. <!doctype html> <html> <head> <meta charset="windows-1251"> <title>Online regexp</title> </head> <body> <form name="calc"> <table> <tr><td>Исходная строка</td><td> </td><td><input type="text" name="source" size="50" value="12345.67"/></td></tr> <tr><td>Регулярное выражение</td><td>/</td><td><input type="text" name="rege" size="50" value="[0-9]+\.?[0-9]{1,4}"/>/</td></tr> <tr><td>Результат</td><td colspan="2"><input type="text" name="result" size="50" disabled/></td></tr> <tr><td colspan="3"align="center"><a href="#" onClick="calculate()">Применить</a></td></tr> </table> </form> <script> function calculate() { var src = document.forms[0].elements[0].value; var reg = document.forms[0].elements[1].value; //Получили значения полей reg = new RegExp(reg); src=reg.exec(src); document.forms[0].elements[2].value = src; } </script> </body> </html> Код скопипастен с моей рабочей странички. Работает. Может кому-то поможет. Опять же. Сие - рабочая лошадка. Оптимизацией не занимался, да и в javascript я новичок. Так что просьба - сильно не пинать. PS Редактировал, т.к. обнаружил очерпятки в коде. На работу они не влиляли, но впечатление портили |
Сообщ.
#2
,
|
|
|
Трудолюбивые извращенцы портируют DOOM на калькуляторы, пишут 3D-шутеры весом 95 КБ, играют музыку на флоповодах. Ленивые пытаются решить любую проблему с помощью регулярки.
Автор, ты своим "изобретением" сразу отсекаешь множество потенциальных посетителей. Например, отсечется вполне валидный j-r-doe+another_stupid_site@e-mail.my-site.foundation. И это еще без учета punicode и нелатинских доменных имен. |
Сообщ.
#3
,
|
|
|
Достаточно наличия @, с остальным разберется почтовый сервер. Лучше послать пару мейлов на несуществующие адреса, чем отсекать валидные.
|
Сообщ.
#4
,
|
|
|
Цитата AVA12 @ Автор, ты своим "изобретением" сразу отсекаешь множество потенциальных посетителей. Например, отсечется вполне валидный j-r-doe+another_stupid_site@e-mail.my-site.foundation. И это еще без учета punicode и нелатинских доменных имен. Я выше писал, что добиться идеальной валидности не реально. Приходится выбирать: или проверять наличие @, или жертвовать некоторым кол-вом случайных посетителей. Я консерватор. Мне топор палача намного ближе либеральных ценностей. Этот "валидатор" пишу для сайта с не гигантской посещаемостью. Скорее всего, случайных людей на нем будет совсем не много. Даже сам сайт, скорее, как визитная карточка, нежели, рабочий инструмент. Вот потому и можно отсекать не жалеючи. В самом деле, мне как-то трудно воспринимать письма из зон .рф, .biz и прочую шалупонь. Почтовый сервер настроен сразу таких откидывать. 90% писем отсекаются по BlackList и зонам. И знаете что интересно? Всех, на работе, это устраивает! Так что пусть, валидные по RFS822, j-r-doe+another_stupid_site@e-mail.my-site.foundation идут лесом. Пусть не мешают нормальным людям работать, а занимаются распостранением спама, порно и виагры. Кесарю - кесарево. |
Сообщ.
#5
,
|
|
|
Конечно, мой пример почтового адреса слишком утрирован, но возможны и более простые, честные варианты, которые "продвинутый" регвыр не пропустит. Например, некоторые почтовые сервера допускают адреса вида логин+тег@домен, что дает клиентам дополнительные возможности для фильтрации писем. Я вполне допускаю мысль, что у автора темы некоммерческий сайт, который требует огромных затрат и уже не справляется с потоком пользователей, так что автор вполне может диктовать посетителям, какие почтовые сервисы им использовать и как именно. Но все равно - некультурно как-то.
|
Сообщ.
#6
,
|
|
|
Цитата Pacific @ Достаточно наличия @, с остальным разберется почтовый сервер. Лучше послать пару мейлов на несуществующие адреса, чем отсекать валидные. +1 Цитата /.*?@.*?/ Добавлено Цитата HighMan @ j-r-doe+another_stupid_site@e-mail.my-site.foundation идут лесом. Пусть не мешают нормальным людям работать, а занимаются распостранением спама, порно и виагры. Кесарю - кесарево. если у меня почта kirill-nesmeyanov@sources.forum, я спамер? |