Как получить регулярное выражение для проверки адреса электронной почты ТОЛЬКО для одного домена?
Я пытаюсь написать регулярное выражение для проверки адреса электронной почты только для одного домена.
У меня есть это выражение
[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}
Но проблема в том, что, например, hello@gmail.com.net
является действительным, и я хочу быть действительным только для одного домена. Так что отсюда я не хочу hello@gmail.com.net
быть действительным.
Нужна помощь Спасибо!
5 ответов
Попробуй это [A-Z0-9a-z._%+-]+@[A-Za-z0-9-]+\.[A-Za-z]{2,64}
, В вашем регулярном выражении есть точка в разрешенных символов за @.
Я нашел это регулярное выражение для Swift:
[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}
У него есть дополнительный обратный слеш.
Я нашел это здесь: http://emailregex.com/
С Уважением,
Melle
Я знаю, что вы уже приняли ответ, но эта идея просто пришла мне в голову. Ты можешь использовать URLComponents
разделить адрес электронной почты на user
а также host
и проверить каждый компонент отдельно:
func validate(emailAddress: String) -> Bool {
guard let components = URLComponents(string: "mailto://" + emailAddress),
let host = components.host else
{
return false
}
return host.components(separatedBy: ".").count == 2
}
print(validate(emailAddress: "hello@gmail.com")) // true
print(validate(emailAddress: "hello@gmail.com.net")) // false
print(validate(emailAddress: "hello")) // false
Ваше требование имеет большой недостаток: допустимые домены могут иметь две точки, например someone@bbc.co.uk
, Получить шаблон регулярного выражения для проверки электронной почты сложно. Gmail, например, будет направлять все письма, отправленные на jsmith+abc@gmail.com
на тот же почтовый ящик, что и jsmith@gmail.com
, Лучший способ - выполнить некоторую элементарную проверку адреса электронной почты, затем отправить электронное письмо пользователю и попросить его щелкнуть ссылку для подтверждения адреса электронной почты.
Вы можете попробовать с рисунком ниже.
/^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@((REPLACE_THIS_WITH_EMAIL_DOMAIN+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
для напр.
/^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@((gmail+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;