Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.188.142.146] |
|
Сообщ.
#1
,
|
|
|
Всем привет. Имею такое РВ:
var filter = /^[-0-9a-z_\.]+@[-0-9a-z^_\.]+\.[a-z]{2,6}$/i; Собственно как сделать, чтобы не пропускало: #запретить подчеркивание и точки в названии домена, по идее должно работать, но не срабатывает ^_\. yapochtapo@mail_рр.ru yapochtapo@.mail.ru yapochtapo@mail..ru Спасибо. |
Сообщ.
#2
,
|
|
|
Почему бы их тогда просто не перечислять вообще в группе [...] ?
var filter = /^[-0-9a-z_\.]+@[-0-9a-z]+\.[a-z]{2,6}$/i; |
Сообщ.
#3
,
|
|
|
Цитата TetRis @ #запретить подчеркивание и точки в названии домена, по идее должно работать, но не срабатывает ^_\. "шапка"(или вознесение в степерь) в квадратных скобках имеет силу только в самом начале. на любой другой позиции он является простым символом. Добавлено Цитата TetRis @ .[a-z]{2,6} а если домен в зоне .com.ua|.info.net и тд. |
Сообщ.
#4
,
|
|
|
Цитата Amphiluke @ Почему бы их тогда просто не перечислять вообще в группе [...] ? var filter = /^[-0-9a-z_\.]+@[-0-9a-z]+\.[a-z]{2,6}$/i; все хорошо, но: moyapochta@self.your.ru не прокатит |
Сообщ.
#5
,
|
|
|
пс. в твоей регурярке много недочетов. не проще ли тебе поискать в интернете. вот на что я первое попал
/(?:[0-9a-z][.\-\w]*)@(?:(?:[0-9a-z][\-0-9a-z]*[0-9a-z]\.)+[a-z]{2,6})/i |
Сообщ.
#6
,
|
|
|
каких еще недочетов?
П.С. /(?:[0-9a-z][.\-\w]*)@(?:(?:[0-9a-z][\-0-9a-z]*[0-9a-z]\.)+[a-z]{2,6})/i пропускает: poc/hta@mail.ru poc\hta@mail.ru poc?hta@mail.ru pochta@mail.hh..ru poc hta@mail.ru #пробелы как в названии так и в начале в общем метод не ахти |
Сообщ.
#7
,
|
|
|
Если хочешь проверять адреса с помощью регвыра в полном соответствии с RFC, то тебе нужно вот такое выражение
:) А если требуется что-то менее строгое и более-менее разумное, то попробуй такой вариант: /^(?:[a-z0-9-]+\.)*[a-z0-9-]+@[a-z0-9-]+\.)+[a-z]{2,6}$/i |
Сообщ.
#8
,
|
|
|
Цитата AVA12 @ Если хочешь проверять адреса с помощью регвыра в полном соответствии с RFC, то тебе нужно вот такое выражение А если требуется что-то менее строгое и более-менее разумное, то попробуй такой вариант: /^(?:[a-z0-9-]+\.)*[a-z0-9-]+@[a-z0-9-]+\.)+[a-z]{2,6}$/i лишняя скобочка или как? /^(?:[a-z0-9-]+\.)*[a-z0-9-]+@[a-z0-9-]+\.)+[a-z]{2,6}$/i |
Сообщ.
#9
,
|
|
|
Вопрос все еще открыт:
var filter = /^[-0-9a-z_\.]+@[-0-9a-z\.]+\.[a-z]{2,6}$/i; пропускает все еще pochta@.mail.ua pochta@mail.com..ua pochta@mail.com.pp..ua pochta@mail.com..pp..ua pochta@mail..com..pp..ua и тд... |
Сообщ.
#10
,
|
|
|
вот подсказали такой РВ, мощное довольно решение, но в название почты пропускает /*^ и тд как исправить?
/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[a-z]{2,4}|museum|travel)$/i Или как по Вашему допускать такие символы или нет? Вот я сделал запрет в названии на все символы кроме -_. /^[a-z0-9-_\.]+@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[a-z]{2,4}|museum|travel)$/i |
Сообщ.
#11
,
|
|
|
Извиняюсь, упустил (?: Вот исправленный вариант:
/^(?:[a-z0-9-]+\.)*[a-z0-9-]+@(?:[a-z0-9-]+\.)+[a-z]{2,6}$/i |