Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Помогите с регуляркой (https://javascript.ru/forum/css-html/14450-pomogite-s-regulyarkojj.html)

tazododu 17.01.2011 11:29

Помогите с регуляркой
 
всем привет! использовал вот такую функцию для проверки email
function check_mail(mail) {
	return (/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i).test(mail);
}


обнаружился один нехороший баг, функция не пропускает адреса вида mail@i.ua

у самого не получается написать регулярку для проверки с таким условием, поэтому прошу помочь мне.

ksa 17.01.2011 12:45

tazododu, оно?
http://javascript.ru/forum/misc/9409...yrazhenie.html

ksa 17.01.2011 13:06

Вот тут предлагают такое решение...

var email='mail@i.ua'
var reg = /^(([a-zA-Z0-9]|[!#$%\*\/\?\|^\{\}`~&'\+=-_])+\.)*([a-zA-Z0-9]|[!#$%\*\/\?\|^\{\}`~&'\+=-_])+@([a-zA-Z0-9-]+\.)+[a-zA-Z0-9-]+$/i  
if (!reg.test(email)) {
    alert ('Пожалуйста, введите корректный электронный адрес.');
} else {
    alert('Ok')
}

x-yuri 17.01.2011 13:32

а чё, мне нравится

ksa 17.01.2011 13:36

x-yuri, да ты гурман! :lol:

tazododu 17.01.2011 18:36

ksa
спасибо за ссылку на хороший ресурс. кстати, ваша регулярка пропускает майлы вида qqq@aa.r, sergey@0.1 Которые тоже являются не верными.

x-yuri
это конечно круто ))

давайте попробуем допилить все-таки мою регулярку...

tazododu 17.01.2011 18:39

Цитата:

Вот тут предлагают такое решение...
этот вариант тоже не хочет пропускать mail@i.ua

Aetae 17.01.2011 18:51

Понапридумывали фигни всякой, а потом удивляются.)

Имхо
/^[\w-.]+@[\w-.]+$/
и не парить мозг.

А все эти мегауточнения всё равно не имеют смысла, кому неохота писать мыло - его не напишет: aaa@bbb.cc и все дела.

\upd вон даж движок форума схавал)

Kolyaj 17.01.2011 19:15

Aetae,
если вы сокращаете проверку, то сокращайте нормально. Ваша регулярка не пропускает a+a@yandex.ru, я таким разработчикам лучи ненависти посылаю.

Aetae 17.01.2011 19:21

Цитата:

Сообщение от Kolyaj (Сообщение 88366)
Aetae,
если вы сокращаете проверку, то сокращайте нормально. Ваша регулярка не пропускает a+a@yandex.ru, я таким разработчикам лучи ненависти посылаю.

На яндексе вы не сможете зарегать почту a+a) (как и на всех почтовиках, что я встречал)

x-yuri 17.01.2011 21:37

не знаю, смогут ли сейчас... но зачем же сразу ставить крест на своем сайте? Будь тут monolithed, он бы сказал, что нужно смотреть в будущее с оптимизмом, да? :)

ksa 17.01.2011 21:40

Цитата:

Сообщение от tazododu
ваша регулярка

Она не моя... :) Для того и ссылку привёл... Там и объяснения есть чего они ей хотели сказать...

Aetae 17.01.2011 22:16

Ну да, ну да, а есть же ещё домены .рф...

В общем фигачить
/^\S+@\S+$/
и никаких проблем))

tazododu 18.01.2011 09:40

почитал, че вы тут написали...подумал, действительно особо парится не буду использую вариант, предложенный ksa . изначально просто хотелось обезопасить человека от неправильного ввода, т.к. логин на сайт у меня по емайлу.

Kolyaj 18.01.2011 10:11

Цитата:

Сообщение от Aetae
На яндексе вы не сможете зарегать почту a+a

Зато на яндексе, если отправить письмо на адрес login+blabla@yandex.ru оно придёт пользователю с логином login. Удобно всем сервисам давать разные адреса.

x-yuri 18.01.2011 10:12

а какие могут быть негативные последствия?

а решается эта проблема так. По-крайней мере контраргументов я не увидел ;)


Часовой пояс GMT +3, время: 20:10.