Проверка с помощью JavaScript корректности введенной информации

JavaScript-проверка email, введенного в форму

Проверке формальной правильности адреса надо уделять особое внимание.
Типичный email адрес выглядит так: vasya@mail.ru

Сформулируем формальные требования к электронному адресу:

  1. Адрес должен содержать специальный символ "@", который отделяет имя пользователя почтовой системы от доменного имени;
  2. Адрес не должен содержать символов "п робелов", ",", ":", ";", "!", "#", "%", "*", "(", ")", "=", "+", "{", "}", "[", "]/", """, "'", "/", "\" и "|";
  3. Адрес должен состоять только из латинских символов;
  4. Так как в Интернете не существует компьютеров, имеющих доменные имена первого уровня, то после символа "@" должна быть как минимум одна ".";
  5. После последней точки должно быть не менее 2-х и не более 4-х символов, причем наличие цифр не допускается;
  6. Между последней точкой и символом "@" должно быть не менее 2-х символов
  7. Слева от "@" должно быть не менее четырех символов.

Исходный код этого примера:
<script>
function checkmail()
{
txt=document.mail.address.value;
if (txt == "") {
	alert("Введите Адрес электронной почты.");
	return false
	}
if (txt.indexOf(".") == -1) {
	alert("Нет символа\".\"");
	return false
	}
if((txt.indexOf(",")>=0)||(txt.indexOf(";")>=0)||(txt.indexOf(" ")>=0)){
	alert("Адрес электронной почты был введен неправильно.");
	return false
	}
dog = txt.indexOf("@");
	if (dog == -1) {
	alert("Нет символа\"@\".");
	return false
	}
if ((dog < 1) || (dog > txt.length - 5)) {
	alert("Адрес электронной почты был введен неправильно.");
	return false
	}
if ((txt.charAt(dog - 1) == '.') || (txt.charAt(dog + 1) == '.')) {
alert("Адрес электронной почты был введен неправильно.");
	return false
	}
alert("Адрес электронной почты был введен ВЕРНО!");
}
</script>
<form method="POST" name="mail" onSubmit="return checkmail()">
	<p>
		<label><b>Email:</b><br>
		<input type="text" name="address" size="20"></label>
	</p>
	<p><input type="submit" value="Проверить" name="B1"></p>
</form>

P.S.: Скрипт не работает с кириллицей, т.к. кириллическое имя домена должно быть преобразовано в соответствии с RFC3491, RFC3454.

Смотрите также:


.