проверка заполнения полей формы через regexp с помошью js

usascha

Новичок
проверка заполнения полей формы через regexp с помошью js

У меня есть код, проверяющий разные поля формы по одинаковой методе. Вот часть, проверяющая почтовый адрес:

PHP:
<script>
...
$this->Out.="if ($this->Form.$Item.value.indexOf('@',0)==-1 || $this->Form.$Item.value.indexOf('.')==-1) {\r\n";
...
</script>
Хочу переделать его, т.к. сейчас он просто проверяет наличие двух символов "@" и "." на проверку не только символов, но и формата самого адреса с помощью regexp(\"^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$\");

В какую сторону копать?
 

Nirva

Dmitry Polyakov
function checkmail(src)
{
if(src.search(/^([a-z_\-0-9]+[\.])*[a-z_\-0-9]+@([a-z_0-9\-\.]+\.)+[a-z]{2,3}$/i)<0)
return false;
else
return true;
}
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Код:
regex = /^...регекс тута...$/;
if (regex.test(...значение поля...)) {
    всё хорошо;
} else {
    всё плохо;
}
 

Tigr

Новичок
function isValidEmail (email)
{
return (/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i).test(email);
}

Nirva
ну, спорить неочем, но домен первого уровня хотя бы до 4, а не до 3; в домене не может быть "_", и перед доменом первого уровня недостаточно [0-9a-z\.] элементарно пройдет адрес c "@..com"
 

usascha

Новичок
вариант с функцией и у меня есть. Мне нужно как-то заменить конструкцию "$this->Form.$Item.value.indexOf('@',0) ..."

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

Вот только проблема в том, что если пользователь введет, напр., "qwe@ssdf." , то это будет признано правильным адресом. А если я вставлю полный шаблон, что Вы дали, то любой раздешенный символ будет принят как правильный мейл.

Вообщем, надо чтобы пользователь обязательно ввел адрес по шаблону, где будут "название ящика" "@" "название домена" "." и после точки 2-3 также разрешенных знака и чтобы все это умещалось в конструкци "$this->Form.$Item.value.indexOf('@',0)" вместо '@'.
 

Nirva

Dmitry Polyakov
если тебе настолько важен почтовый ящик пользователя - отправляй ему письмо для подтверждения
 

usascha

Новичок
отправлять подтверждение на ящик...
а потом делать можуль по авторизации клика из письма?

Это уже для меня и моих задач слишком сложно, да и не очень-то нужно.
 
Сверху