Из документации :
json
Проверяемое поле должно быть допустимой строкой JSON .
blockquote>Ваши данные были проанализированы из JSON самим Laravel, и
specification
уже является массивом , а не строкой JSON . Вы можете проверить это, изменив правило наrequired|array
, и вы увидите, что оно прошло.
Не используйте reg-ex.
По-видимому, следующий регистр, который правильно проверяет большинство адресов электронной почты, соответствующих RFC 2822 , (и все равно не работает с такими вещами, как " user@gmail.com.nospam ", поскольку will org.apache.commons.validator.routines.EmailValidator)
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
Возможно, самый простой способ проверить электронную почту - просто отправить электронное письмо с подтверждением на указанный адрес, и оно отскакивает, тогда оно недействительно.
Если вы хотите выполнить некоторые базовые проверки, вы можете просто проверить, что он имеет форму * @ *
. Если у вас есть проверка, специфичная для бизнес-логики, вы можете выполнить это с помощью регулярного выражения, например, должен быть gmail.com аккаунт или что-то в этом роде.
Обратите внимание, что большинство регулярных выражений недействительно для международных доменных имен (IDN) и новых доменов верхнего уровня, таких как .mobi или .info (если вы проверяете коды стран или .org,. com, .gov и т. д.).
Действительная проверка должна разделять локальную часть (перед знаком at) и доменную часть. Вы также должны учитывать максимальную длину локальной части и домена (в сумме 255 символов, включая знак at).
Лучшим подходом является преобразование адреса в формат, совместимый с IDN (при необходимости), проверка локальной части (RFC), проверка длины адреса и проверка доступности домена (поиск DNS MX) или просто послать электронное письмо.
Самое простое решение Kotlin с помощью дополнительных функций:
fun String.isEmailValid() =
Pattern.compile(
"[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" +
"\\@" +
"[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
"(" +
"\\." +
"[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +
")+"
).matcher(this).matches()
и затем можно проверить как это:
"testemail6589@gmail.com".isEmailValid()