如何仅获取一个域的验证电子邮件地址的正则表达式?
how to obtain a regular expression for validation email address for one domain ONLY?
我正在努力编写一个正则表达式来验证一个域的电子邮件地址。
我有这个表情
[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,64}
但问题是,例如 hello@gmail.com.net
是有效的,我只想只对一个域有效。因此,我不希望 hello@gmail.com.net
有效。
需要帮助。谢谢!
您可以使用类似的东西:
\b[A-Z0-9a-z._%+-]+@gmail\.com\.net\b
试试这个 [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/
此致,
梅勒
我知道你已经接受了答案,但我只是想到了这个想法。您可以使用 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
。 Getting a regex pattern 验证电子邮件很难。例如,Gmail 会将发送到 jsmith+abc@gmail.com
的所有电子邮件定向到与 jsmith@gmail.com
相同的收件箱。最好的方法是对电子邮件地址执行一些基本检查,然后向用户发送电子邮件并要求他们单击 link 以确认电子邮件。
您可以尝试以下模式。
/^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@((REPLACE_THIS_WITH_EMAIL_DOMAIN+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
例如
/^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@((gmail+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
我正在努力编写一个正则表达式来验证一个域的电子邮件地址。
我有这个表情
[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,64}
但问题是,例如 hello@gmail.com.net
是有效的,我只想只对一个域有效。因此,我不希望 hello@gmail.com.net
有效。
需要帮助。谢谢!
您可以使用类似的东西:
\b[A-Z0-9a-z._%+-]+@gmail\.com\.net\b
试试这个 [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/
此致,
梅勒
我知道你已经接受了答案,但我只是想到了这个想法。您可以使用 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
。 Getting a regex pattern 验证电子邮件很难。例如,Gmail 会将发送到 jsmith+abc@gmail.com
的所有电子邮件定向到与 jsmith@gmail.com
相同的收件箱。最好的方法是对电子邮件地址执行一些基本检查,然后向用户发送电子邮件并要求他们单击 link 以确认电子邮件。
您可以尝试以下模式。
/^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@((REPLACE_THIS_WITH_EMAIL_DOMAIN+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
例如
/^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@((gmail+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;