Артём Мáлков

Проверяем e-mail на валидность на PHP/jQuery

22 июн1 комм

Сегодня я хотел бы поговорить с вами немного о валидности. Что это такое? Это проверка введенной информации согласно какому-либо шаблону, маске. Все мы знаем, что мобильный телефон для России начинается с +7, а e-mail должен содержать в себе знак @.

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

Проверка валидности e-mail на PHP

Итак, мы полагаем, что в какую-то переменную нам поступает e-mail пользователя. Наша задача – проверить ее корректность, и если в адресе имеется ошибка – сообщить пользователю об этом.

Реализация следующая:

<?php

	$email = "test#gmail.com"; // E-mail пользователя
	$pattern = "|^([a-z0-9_.-]{1,20})@([a-z0-9.-]{1,20}).([a-z]{2,4})|is";

	if(preg_match($pattern, strtolower($email))) {
	
		// Действие, если e-mail корректен
		
	} else {
	
		// Действие, если e-mail некорректен
		
	}
	
?>

Соответственно, если e-mail некорректен, вы можете вывести необходимое сообщение и остановить дальнейшее выполнение скрипта (в нашем случае – отправку) до тех пор, пока не будет указан правильный e-mail.

Проверка валидности e-mail на jQuery

Поскольку jQuery – клиентский скрипт (то есть выполняется на стороне пользователя), то здесь мы рассмотрим live-пример, где при введении e-mail в некоторое поле будет мобильно происходить проверка его на корректность.

У нас есть поле для ввода e-mail:

<input type="email" name="email" id="valid_email" />

Теперь напишем небольшой скрипт, который будет проверять корректность заполненного поля после того, как оно потеряло фокус:

<script>

	$("#valid_email").blur(function() {
	
		var email = $(this).val(); // Получаем e-mail пользователя
		var pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i;

		if(pattern.test(email)) {
		
			// Действие, если e-mail корректен
			
		} else {
		
			// Действие, если e-mail некорректен
			
		}
		
	});
	
</script>

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

Рекомендуем к просмотру
Как проверить наличие слова, фразы или текста в строке на PHP/JavaScript
Статьи и советы
Masked Input – своя маска для полей ввода input/textarea на jQuery
Модули и скрипты
Как изменить логотип в e-mail письмах Magento 2?
Статьи и советы
1
комментарий
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 1
    766
      •  Гости
    17 июл в 23:53

    {2,4} в regex для TLD - ужасный рецепт, уже давно существуют корневые зоны и длиннее info, например online или party.

Подняться наверх
«Pandoge» - помощник вебмастера