Я пытаюсь использовать следующее регулярное выражение для проверки писем в базе данных MySQL:
^[^@]+@[^@]+\.[^@]{2,}$
в таком состоянии:
...and email REGEXP '^[^@]+@[^@]+\.[^@]{2,}$'
По большей части, выражение работает.Но это позволяет использовать односимвольные домены верхнего уровня.Например, оба следующие письма проходят проверку:
something@hotmail.com
и something@hotmail.c
Второй случай явно опечатка.{2,}
регулярного выражения должно позволять любую строку символов, кроме символа @, длиной 2 или более, после точки.
Я сам запускал регулярное выражение через несколько тестеров, использующих разные протоколы (Perl, TCL и т. Д.), И каждый раз он работает как положено, отклоняя односимвольную версию TLD адреса электронной почты.Только когда я использую это регулярное выражение в контексте MySQL, оно завершается неудачей.
Я проверил, и после «.c» в ошибочном адресе электронной почты нет никаких дополнительных символов.Есть ли что-то, что присуще MySQL или этой версии, что могло бы помешать этому?
Запуск MySQL версии 5.5.61-cll