|
|
|
|
$str4re = '^[a-zA-Z0-9_\-]*[_0-9a-zA-Z\.\-]*[0-9a-zA-Z_\-]+@[a-zA-Z0-9\-]+[a-zA-Z0-9\.\-]*\.[a-zA-Z]{2,4}$';
|
НО тут возможна ошибка: ДВЕ подряд точки в имени домена.
Как в ЭТОМ ЖЕ рег выражении добавить такую проверку?
Я организовал проверку посиками в строке, но как сделать именно все в ОДНОМ выражении? Нужно использовать подвыражения? | |
|
|
|
|
|
|
|
для: root_xxx
(24.05.2015 в 02:45)
| | Например, так:
^[a-zA-Z0-9_\-]*[_0-9a-zA-Z\.\-]*[0-9a-zA-Z_\-]+@[a-zA-Z0-9\-]+(?:(?!\.\.)[_0-9a-zA-Z\.\-])*\.[a-zA-Z]{2,4}$
|
Или так:
^[a-zA-Z0-9_\-]*[_0-9a-zA-Z\.\-]*[0-9a-zA-Z_\-]+@(?:[a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,4}$
|
Одно замечание: эта регулярка даже близко не претендует на "идеал" по валидации e-mail адресов, т.к. пропустит множество недопустимых адресов и не пропустит ещё большее множество валидных и реально существующих.
Попытка реализовать RFC в regexp (людям с неустойчивой психикой и беременным не рекомендуется): http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
На вики есть компактное описание синтаксиса и примеры валидных/невалидных адресов: http://en.wikipedia.org/wiki/Email_address#Syntax | |
|
|
|
|
|
|
|
для: sms-send
(24.05.2015 в 19:59)
| | > эта регулярка даже близко не претендует на "идеал" по валидации e-mail адресов,
Какая именно регулярка? Та что я привел или те что вы написали?
Я свою сам построил - она не тупо взята откуда-то. Что она плохого пропустит и что хорошего не пропустит ?
Смотрю тут - http://en.wikipedia.org/wiki/Email_address#Valid_email_addresses , НО это можно исправить.
Знаю, что моя 100% не пропустит адрес mail@net
>
>Попытка реализовать RFC в regexp (людям с неустойчивой психикой и беременным не рекомендуется)
%;:))) - ага за ссылки пасиба. У меня скоро вырубят интернет. Сохранил.
Сомневаюсь что у кого-то будут такие адреса,
"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com
#!$%&'*+-/=?^_`{}|~@example.org
"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com
|
НО возможность присутствия таких символов....(? нужно подумать) | |
|
|
|
|
автор: Мимовася (25.05.2015 в 12:13) |
|
|
для: root_xxx
(25.05.2015 в 06:36)
| | >Какая именно регулярка? Та что я привел или те что вы написали?
Все, написанные выше в этом топике.
> Что она плохого пропустит и что хорошего не пропустит ?
Пропустит: ".---..---@------.abcd"
Не пропустит валидные адреса: "local+mark@gmail. com", "local@[33.33.33.33]" и много других.
Т.к. написать качественную регулярку, учитывающую все допустимые и отсекающую недопустимые варианты, неоправданно сложно, то стоит пойти по принципу наименьшего зла: лучше пропустить невалидные адреса, чем ложно отказать на реальном адресе.
Если задача не учебная, то лучше взять проверенный вариант регулярки из какого-нибудь популярного фреймворка. | |
|
|
|
|
|
|
|
для: Мимовася
(25.05.2015 в 12:13)
| | >Пропустит: ".---..---@------.abcd"
>Не пропустит валидные адреса: "local+mark@gmail. com", "local@[33.33.33.33]" и много других.
>
>Т.к. написать качественную регулярку, учитывающую все допустимые и отсекающую недопустимые варианты, неоправданно сложно, то стоит пойти по принципу наименьшего зла: лучше пропустить невалидные адреса, чем ложно отказать на реальном адресе.
>
>
>
>Если задача не учебная, то лучше взять проверенный вариант регулярки из какого-нибудь популярного фреймворка.
та задача не учебная. блиин, ну та ничего - добавлю пару символов, НО кардинально менять свое регекс не буду. | |
|
|
|
|
|
|
|
для: root_xxx
(25.05.2015 в 21:30)
| | ПОЧЕМУ никто не сказал про filter_var($usmail, FILTER_VALIDATE_EMAIL)???
function check_usmail_correct($ddb, $usmail) {
require ('vars.inc');
if (!filter_var($usmail, FILTER_VALIDATE_EMAIL)) {
//root@... НЕ правилный адрес.
go2($REGERR); //
}
|
| |
|
|
|