Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |
regexp + PHP-код внутри 25.07.05 10:04 Число просмотров: 1944
Автор: kstati <Евгений Борисов> Статус: Elderman Отредактировано 25.07.05 10:12 Количество правок: 4
|
w+([\.-][\w-]+@(\w{2,}|\w+(\.\w[\w-]*)\.[A-Za-z]{2,4}
А Как вам такое мыло?
a@__________________________.az
/* Проверка строки - правильное ли это мыло,или глаза щипит?
Немного истории - мыло состоит из трех частей...
имя, разделитель, домен
Имя может состоять из букв и цифр.
Первый символ имени всегда был буквой...
второй и последующий- буквой,цифрой, или чем-либо из".[]-_$!#
Последний (ну, может он и второй) - буквой или цифрой...
Разделитель состоит из одного символа ;) - комЭТа
Домен... все просто - домены выше первого уровня могут состоять
из букв, цифр символов []_-= и разделяются точкой
Домен первого уровня может быть одним из общественных - ну, списочек известен
или набором латинских букв длинной в два символа - кодом страны.
Коды стран тоже общедоступны, но стоит ли их впендюривать в проверку, если их очень много? в любом введь случае можно написать my@domain.com и мыло будет неверным, несмотря на синтаксис )*/
function IsValidEmail($string) {
// пустая строка - неправильная.
if ($string==""|$string == NULL) return false;
if(!eregi('^([a-zA-Z])+(([][\-\$=!_.])*([a-zA-Z0-9])+)+' // имя
.'@'.'(([a-zA-Z0-9_\-=]+)\.)+' // домены 2...n уровня
.'(com|edu|gov|mil|net|org|info|[a-zA-Z]{2})$' // домен домены первого уровня
,$string)) {
return false;
} else {
return true;
}
}
---
|
<miscellaneous>
|
Формат адреса e-mail 24.07.05 14:10
Автор: Heller <Heller> Статус: Elderman
|
Нигде не смог найти сабж. Для проверки формата написал такой регэксп:
$mail=~/^\w+([\.-][\w-]+@(\w{2,}|\w+(\.\w[\w-]*)\.[A-Za-z]{2,4}$/
Будут какие-нибудь комментарии?
|
 |
regexp + PHP-код внутри 25.07.05 10:04
Автор: kstati <Евгений Борисов> Статус: Elderman Отредактировано 25.07.05 10:12 Количество правок: 4
|
w+([\.-][\w-]+@(\w{2,}|\w+(\.\w[\w-]*)\.[A-Za-z]{2,4}
А Как вам такое мыло?
a@__________________________.az
/* Проверка строки - правильное ли это мыло,или глаза щипит?
Немного истории - мыло состоит из трех частей...
имя, разделитель, домен
Имя может состоять из букв и цифр.
Первый символ имени всегда был буквой...
второй и последующий- буквой,цифрой, или чем-либо из".[]-_$!#
Последний (ну, может он и второй) - буквой или цифрой...
Разделитель состоит из одного символа ;) - комЭТа
Домен... все просто - домены выше первого уровня могут состоять
из букв, цифр символов []_-= и разделяются точкой
Домен первого уровня может быть одним из общественных - ну, списочек известен
или набором латинских букв длинной в два символа - кодом страны.
Коды стран тоже общедоступны, но стоит ли их впендюривать в проверку, если их очень много? в любом введь случае можно написать my@domain.com и мыло будет неверным, несмотря на синтаксис )*/
function IsValidEmail($string) {
// пустая строка - неправильная.
if ($string==""|$string == NULL) return false;
if(!eregi('^([a-zA-Z])+(([][\-\$=!_.])*([a-zA-Z0-9])+)+' // имя
.'@'.'(([a-zA-Z0-9_\-=]+)\.)+' // домены 2...n уровня
.'(com|edu|gov|mil|net|org|info|[a-zA-Z]{2})$' // домен домены первого уровня
,$string)) {
return false;
} else {
return true;
}
}
---
|
 |  |
Не везде согласен 28.07.05 02:18
Автор: Heller <Heller> Статус: Elderman Отредактировано 28.07.05 02:20 Количество правок: 1
|
> w+([\.-][\w-]+@(\w{2,}|\w+(\.\w[\w-]*)\.[A-Za- > z]{2,4} > А Как вам такое мыло? > a@__________________________.az Ну, теоретически-то оно может существовать, насколько я понимаю (если закрыть глаза на домен az).
> Первый символ имени всегда был буквой... > второй и последующий- буквой,цифрой, или чем-либо из >".[]-_$!#
Ни разу такого не видел, если честно, ну да ладно. Добавлю - хуже не будет.
> Домен... все просто - домены выше первого уровня могут > состоять > из букв, цифр символов []_-= и разделяются точкой Аналогично.
> Коды стран тоже общедоступны, но стоит ли их впендюривать в > проверку, если их очень много? в любом введь случае можно > написать my@domain.com и мыло будет неверным, несмотря на > синтаксис )*/ Здесь поддержу HandleX'а. Доменов первого уровня расплодилось до кучи: museum, name, aero, coop, pro, int, скоро планируется ввести mobi. Кстати, museum состоит аж из шести символов, так что лучше, думаю, проверять домен первого уровня как ([a-zA-Z]{2,4}|museum).
>(!eregi('^([a-zA-Z])+(([][\-\$=!_.])*([a-zA-Z0-9])+)+' //
> имя Адрес e-mail вполне может начинаться с цифры или символа подчёркивания (вроде бы).
Ещё не совсем понятна конструкция "[]". Может в PHP оно что-то значит, но я сам на Perl'е пишу, а там это можно трактовать только как пустой шаблон.
> .'@'.'(([a-zA-Z0-9_\-=]+)\.)+' // домены > 2...n уровня ИМХО мой первоначальный вариант несколько более продуман - такой regexp запросто пропустит домен вроде "=-".
|
 |  |  |
C подчеркиванием вначале и доменами 1-го уровня - согласен -- я слишком строг. А закрывающаяся скобка сразу после открывающейся ([]) -- это просто первый символ, используемый в наборе символа (т.е. он не трактуется как служебный, а юзается в проверке). 03.08.05 21:15
Автор: kstati <Евгений Борисов> Статус: Elderman
|
|
 |  |
А домены первого уровня .biz, .xxx — как с ними? ;-) Имхо, не стоит домены жёстко прописывать в коде, мир не стоит на месте. 26.07.05 08:13
Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 26.07.05 08:14 Количество правок: 2
|
|
 |
знак подчеркивания тоже используется довольно часто... 25.07.05 00:30
Автор: Tom_Pain Статус: Незарегистрированный пользователь
|
|
 |  |
Он входит в класс \w 25.07.05 01:38
Автор: Heller <Heller> Статус: Elderman
|
|
|
|