Как получить регулярное выражение для проверки адреса электронной почты ТОЛЬКО для одного домена?

Я пытаюсь написать регулярное выражение для проверки адреса электронной почты только для одного домена.

У меня есть это выражение

[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, Лучший способ - выполнить некоторую элементарную проверку адреса электронной почты, затем отправить электронное письмо пользователю и попросить его щелкнуть ссылку для подтверждения адреса электронной почты.

Вы можете использовать что-то вроде:

\b[A-Z0-9a-z._%+-]+@gmail\.com\.net\b

Regex Demo

Вы можете попробовать с рисунком ниже.

      /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@((REPLACE_THIS_WITH_EMAIL_DOMAIN+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;

для напр.

      /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@((gmail+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
Другие вопросы по тегам