- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
/**
* bool _validate_mail(string mail)
* Validate an email address
* @access private
* @param string mail The email address string
* @return bool
*/
function _validate_mail($mail)
{
if (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',$mail)){
return true;
}
return $this->_debug(4, $mail);
}
InTech 09.01.2010 22:36 # −2
wvxvw 09.01.2010 22:51 # +1
?
Ну как бы выражение конечно безумное и вообще неправильное, но и в целом попытка сделать валидацию мейла регекспом впринципе обречена на провал... Даже не знаю :) Я думаю, плюс :)
nolka4 09.01.2010 22:58 # 0
если не секрет, а то я все не могу понять, в чем разница между .+ и .* :(
wvxvw 09.01.2010 23:32 # 0
+ - 1..Infinity
Но как бы задача не решается с помощью регулярных выражений, или, может и можно как-нибудь, но выражение будет очень громоздким. RFC описывающий структуру адреса разрешает очень много разных вариантов, например:
"Александр Сергеевич"@Пушкин
это вполне валидный адрес, в то время как:
[email protected]
Не валидный
Т.е. валидацию мейлов нужно делать с помощью других инструментов, регулярные выражения для этого не подходят.
guest 09.01.2010 23:33 # 0
guest 09.01.2010 23:42 # −1
Как хорошие прогеры проверяют валидность URL? например cpp-шные прогеры
guest 12.01.2010 04:38 # +1
Это пять, чувак! смеюсь... cpp-щные прогеры хорошие, ласковые и пушистые :D
wvxvw 10.01.2010 00:13 # +1
- проверить общую длину
- если длина в допустимых пределах, проверить, что @ в строке только 1
- взять все знаки до @
- проверить длину
- если длина в предлах допустимой нормы > проверить первый символ
-- если начинаются с кавычки и заканчиваются кавычкой > варинат валидации имени #1
-- если нет > проверить на наличие недопустимых символов
--- если недопустимых символов нет > проверить недопустимые сочетания символов
---- если недопустимых сочетаний нет > перейти к валидации домейна
- взять все знаки после @
- проверить длину
- если длина в допустимых пределах > проверить наличие недопустимых символов
-- если недопустимых символов нет > проверить наличие недопустимых сочетаний символов.
(возможно разбить на блоки для отдельной валидации домейнов разных уровней)
#1 вариант валидации - аналогично вышеприведенному, только набор допустимых символов другой
* опционально проверить наличие домейна в таблице имен.
guest 10.01.2010 12:45 # 0
HyperGeek 11.01.2010 10:44 # 0
guest 11.01.2010 09:25 # 0
http://regexlib.com/DisplayPatterns.aspx
или
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
guest 22.01.2010 19:17 # 0