Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.07.2012, 19:46
Интересующийся
Отправить личное сообщение для sitebuilder Посмотреть профиль Найти все сообщения от sitebuilder
 
Регистрация: 26.02.2012
Сообщений: 25

Не работает проверка валидности емайла
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; } 
}


Где то здесь ошибка в регулярке, но где не могу понять.
Ответить с цитированием
  #2 (permalink)  
Старый 06.07.2012, 19:51
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от sitebuilder
Не работает проверка валидности емайла
А опишите - в чём соль проверки ? мож можно и без регулярки или более короткой
Ответить с цитированием
  #3 (permalink)  
Старый 06.07.2012, 19:57
Интересующийся
Отправить личное сообщение для sitebuilder Посмотреть профиль Найти все сообщения от sitebuilder
 
Регистрация: 26.02.2012
Сообщений: 25

Цель: при вводе емайла в текстовом поле чтобы сразу проверялось на валидность то что вводится и отсекались бы невалидные символы.

С полем логина или пароля у меня все без проблем работает, там регулярка простая. А вот тут затык.
Ответить с цитированием
  #4 (permalink)  
Старый 06.07.2012, 20:02
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

sitebuilder,
Приведите шесть примеров три Валидных - Три невалидных (в столбик
Ответить с цитированием
  #5 (permalink)  
Старый 06.07.2012, 20:16
Интересующийся
Отправить личное сообщение для sitebuilder Посмотреть профиль Найти все сообщения от sitebuilder
 
Регистрация: 26.02.2012
Сообщений: 25

Мне кажется, либо я неточно выразился в первом посте, либо Вы меня не так поняли.

Вот пример того что работает. Отсечение невалидных символов в поле логина:

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
и др.
Ответить с цитированием
  #6 (permalink)  
Старый 06.07.2012, 20:44
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<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

Последний раз редактировалось Deff, 06.07.2012 в 20:48.
Ответить с цитированием
  #7 (permalink)  
Старый 06.07.2012, 20:58
Интересующийся
Отправить личное сообщение для sitebuilder Посмотреть профиль Найти все сообщения от sitebuilder
 
Регистрация: 26.02.2012
Сообщений: 25

Полезный пример. Но у меня задача найти правильную регулярку для моего случая. У меня есть готовая функция (см выше), надо лишь правильно запихнуть туда регулярку. Пробовал взять регулярку из Вашего последнего примера - не получилось.

Моя функция позволяет на лету удалять из текстового поля символы которые не являются валидными. Не могу лишь регулярку правильную для емайла подобрать.
Ответить с цитированием
  #8 (permalink)  
Старый 06.07.2012, 21:32
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Если вы делаете скрипт для проверки емейлов на публичном сайте, то он может принимать некоторые неправильные емейл адреса, но обязан принимать все валидные адреса. Точная регулярка, которая принимает все правильные адреса и отсеивает неправильные, довольно сложна. Поэтому, по моему мнению, лучше только проверять в адресе емейл наличие символа "@".
В Википедии есть статья по этой теме, где написано, что даже такой адрес:
Код:
"()<>[]:,;@\\\"!#$%&'*+-/=?^_`{}| ~  ? ^_`{}|~.a"@example.org
является валидным.

Последний раз редактировалось oneguy, 08.07.2012 в 17:48.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQyery функция странно работает! Midel Общие вопросы Javascript 4 08.04.2012 13:40
Не работает код внутри циклов DZHETIGAPA Events/DOM/Window 1 21.06.2011 01:03
Не работает remote проверка в jquery validate MaratCrash jQuery 3 12.03.2011 05:54
Динамическая HTML форма (FireFox - работает, IE - не работает) dm1tr1y Общие вопросы Javascript 10 11.12.2009 15:59
Скрипт меню-гармошки работает выборочно Extern Элементы интерфейса 2 23.02.2009 15:32