@olegkurbatov

Как сделать чтобы проверялся email?

Пытаюсь разобраться с Preg_match и не в какую не выходит сделать чтобы почта проверялась по "шаблону"
if (preg_match('/[^(\w)|(\@)|(\.)|(\-)]/', $email)) {
$this->setFieldError("email", "Type Mail@mail.com");
return;
}
Пробую такой вариант, но не в какую.
Ввожу в поле "psdaspd" он пропускает, как сделать чтобы без ~"*****@****.***" такого вида не позволял зарегать?
  • Вопрос задан
  • 258 просмотров
Решения вопроса 1
Palehin
@Palehin
Frontend
<input type="email" />

Я так делал:

if(!preg_match('/^([a-zA-Z0-9а-яА-ЯёЁ_\-.]+\@[a-zA-Z0-9а-яА-ЯёЁ_\-.]+)$/ui', $email))
{
    //error
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
trevoga_su
@trevoga_su
1. учись регулярным выражениям на другом примере, ибо регулярное выражение для проверки email адреса ты не напишешь
по данным этого сайта оно выглядит примерно так, как минимум:

/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/iD

хотя есть мнение, что по спецификации оно выглядит так.

но большинство соглашается с тем, что корректное выражение для проверки email вот:
/\A[^@]+@[^@]+\z/
а все потому, что по факту твоя проверка ничего не дает. вообще. она никому не нужна и единственный способ проверить, есть ли такой ящик - послать письмо с кодом подтверждения.

2. '/[^(\w)|(\@)|(\.)|(\-)]/' -- ты пишешь бредятину
выучи как следует синтаксис, на оф. сайте пхп он отлично описан и по-русски
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы