如何用正则表达式验证邮件列表仅包含单一指定域名?
验证邮件地址列表仅含指定单一域名的正则表达式
直接用下面的正则就能实现需求,以验证所有邮箱都是gmail.com域名为例:
^(?:\S+@gmail\.com(?:,\s*)?)+$
正则说明
^和$:锁定整个字符串的开头和结尾,确保从头到尾都符合规则(?:\S+@gmail\.com):匹配单个gmail.com域名的邮箱,\S+匹配@前的非空白字符(覆盖大部分合法的邮箱前缀格式),\.转义点号避免匹配任意字符(?:,\s*)?:处理邮箱间的分隔符,支持逗号后带空格或不带空格的情况,?表示这个分隔符是可选的(兼容单个邮箱的情况)+:确保至少有一个合法邮箱,且所有内容都是符合规则的邮箱加可选分隔符
适配其他域名
如果要验证其他域名(比如yahoo.com),只需要把正则里的gmail\.com替换成目标域名即可,比如:
^(?:\S+@yahoo\.com(?:,\s*)?)+$
测试示例
- 匹配成功(全是指定域名):
number1@gmail.com, number2@gmail.comsingle@gmail.com
- 匹配失败(包含其他域名):
number1@gmail.com, number2@yahoo.comnumber1@google.com
注意事项
如果你的邮箱列表用的是其他分隔符(比如分号;),把正则里的,\s*替换成对应的分隔符即可,比如;\s*。
内容的提问来源于stack exchange,提问作者Patrick Bosmans
相关产品推荐
相关产品推荐

