2

我只想允许有效的非公开电子邮件地址,例如 gmail、yahoo、hotmail 等。

任何人都可以帮我检查一下吗?我猜我需要使用正则表达式,但不确定是否有更简单的方法

4

1 回答 1

1

如果您只需要过滤顶级域,那么您可以使用以下内容:

^[a-z0-9._%+-]+@[a-z0-9.-]+\.(?:edu|gov|mil)$

这只会验证以 、 或 结尾的.edu电子邮件.gov地址.mil。例如,

bah@humbug.gov <- valid
guy.smiley@gmail.com <- invalid
doctor.who@univ.edu <- valid
person@anything.com <- invalid

注意:这些都假设Ignore Case打开了 regex 选项。

如果您还希望允许使用两个字母的顶级域国家代码,例如.fror .ca,您可以添加这样的表达式:

^[a-z0-9._%+-]+@[a-z0-9.-]+\.(?:[a-z]{2}|edu|gov|mil)$

相反,如果您想排除“三大”电子邮件主机,您可以使用以下内容:

^[a-z0-9._%+-]+@(?!gmail\.com|yahoo\.com|hotmail\.com)(?:[a-z0-9.-]+\.?)+$

这使用带有(?!)“如果后缀不存在则匹配”分组的前瞻断言)示例:

bah@humbug.gov <- valid
guy.smiley@yahoo.com <- invalid
doctor.who@univ.edu <- valid
person@anything.com <- valid

可以在此处找到更多电子邮件地址验证的正则表达式示例。

于 2012-11-12T20:00:12.150 回答