Не работает проверка валидности емайла
function proverka_email(input) { var value = input.value; var rep = /([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/g; if (rep.test(value)) { value = value.replace(rep, ''); input.value = value; } } Где то здесь ошибка в регулярке, но где не могу понять. |
Цитата:
|
Цель: при вводе емайла в текстовом поле чтобы сразу проверялось на валидность то что вводится и отсекались бы невалидные символы.
С полем логина или пароля у меня все без проблем работает, там регулярка простая. А вот тут затык. |
sitebuilder,
Приведите шесть примеров три Валидных - Три невалидных (в столбик |
Мне кажется, либо я неточно выразился в первом посте, либо Вы меня не так поняли.
Вот пример того что работает. Отсечение невалидных символов в поле логина: function proverka_login(input) { var value = input.value; var rep = /[^a-zA-Z0-9]/g; if (rep.test(value)) {value = value.replace(rep, ''); input.value = value;} } <input name="login" type="text" onkeyup="return proverka_login(this);"> Теперь хочу сделать то же но с полем Email. Вот что у меня получилось: function proverka_email(input) { var value = input.value; var rep = /[^a-zA-Z0-9@._\-]/g; if (rep.test(value)) {value = value.replace(rep, ''); input.value = value;} } <input name="email" type="text" onkeyup="return proverka_email(this);"> Но это не правильный подход. Ибо теперь можно вводить такие email как: @@asdasd.... asdasd....@ asdasd@@asdasd.ru asdasd@asdasd...ru asdasdas@asdasd@.rrrrrrr и др. |
<input id="MyInp" type=text ><input type=button onclick="tstInp()"> <script type="text/javascript"> function tstInp() { var val = document.getElementById("MyInp").value; var tst=val.search(/^[a-z0-9_]+?@[a-z0-9_]+\.[a-z]{2,4}$/g) if(tst==0){alert("Верно");return true;} alert("Неверно");return false; } </script> есть еще и нижняя черта http://www.sitc.ru/mail/email.shtml |
Полезный пример. Но у меня задача найти правильную регулярку для моего случая. У меня есть готовая функция (см выше), надо лишь правильно запихнуть туда регулярку. Пробовал взять регулярку из Вашего последнего примера - не получилось.
Моя функция позволяет на лету удалять из текстового поля символы которые не являются валидными. Не могу лишь регулярку правильную для емайла подобрать. |
Если вы делаете скрипт для проверки емейлов на публичном сайте, то он может принимать некоторые неправильные емейл адреса, но обязан принимать все валидные адреса. Точная регулярка, которая принимает все правильные адреса и отсеивает неправильные, довольно сложна. Поэтому, по моему мнению, лучше только проверять в адресе емейл наличие символа "@".
В Википедии есть статья по этой теме, где написано, что даже такой адрес: Код:
"()<>[]:,;@\\\"!#$%&'*+-/=?^_`{}| ~ ? ^_`{}|~.a"@example.org |
Часовой пояс GMT +3, время: 13:31. |