Как я должен проверить адрес электронной почты?

Из документации :

json

Проверяемое поле должно быть допустимой строкой JSON .

blockquote>

Ваши данные были проанализированы из JSON самим Laravel, и specification уже является массивом , а не строкой JSON . Вы можете проверить это, изменив правило на required|array, и вы увидите, что оно прошло.

312
задан Sufian 14 August 2014 в 20:47
поделиться

3 ответа

Не используйте 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 аккаунт или что-то в этом роде.

47
ответ дан 23 November 2019 в 01:10
поделиться

Обратите внимание, что большинство регулярных выражений недействительно для международных доменных имен (IDN) и новых доменов верхнего уровня, таких как .mobi или .info (если вы проверяете коды стран или .org,. com, .gov и т. д.).

Действительная проверка должна разделять локальную часть (перед знаком at) и доменную часть. Вы также должны учитывать максимальную длину локальной части и домена (в сумме 255 символов, включая знак at).

Лучшим подходом является преобразование адреса в формат, совместимый с IDN (при необходимости), проверка локальной части (RFC), проверка длины адреса и проверка доступности домена (поиск DNS MX) или просто послать электронное письмо.

0
ответ дан 23 November 2019 в 01:10
поделиться

Самое простое решение 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()
0
ответ дан 23 November 2019 в 01:10
поделиться
Другие вопросы по тегам:

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