如何编写支持分号分隔多个合法邮箱的校验正则表达式
分号分隔多邮箱匹配正则方案
直接基于你现有的单邮箱匹配规则,调整后的完整正则如下:
^\S+@\S+\.\S+(?:;\S+@\S+\.\S+)*$
规则逻辑拆解
^锚定字符串起始位置,杜绝开头出现多余非法字符\S+@\S+\.\S+复用你原本的单个邮箱匹配规则(?:;\S+@\S+\.\S+)*非捕获分组,匹配0次或多次「分号+合法单个邮箱」的组合:- 重复0次时,对应单个合法邮箱的场景
- 重复N次时,对应N+1个合法邮箱用分号分隔的场景,天然保证分号两侧都是合法邮箱,不会出现连续分号、空项的问题
$锚定字符串结束位置,杜绝末尾出现多余分号或其他非法字符
匹配效果验证
合法字符串(正常放行)
- 单个邮箱:
example1@email.com匹配通过 - 多邮箱拼接:
example1@email.com;example2@email.com;example3@email.com;example4@email.com匹配通过
非法字符串(正常拦截)
- 含格式错误邮箱项:如示例
example1@email.com;example2email.com;example3@email.com;,第二项缺少@不符合单邮箱规则,整体匹配失败 - 末尾带多余分号:因
$锚定要求字符串最后必须是合法邮箱,尾部分号场景直接拦截 - 开头带分号、连续分号、分号两侧有空项的场景,均会因不符合分组匹配规则被拦截
注:当前使用的单邮箱规则
\S+@\S+\.\S+属于宽松匹配,如果需要更严谨的邮箱格式校验,直接替换正则中对应单邮箱规则的部分即可,多邮箱拼接的逻辑无需调整。
内容的提问来源于stack exchange,提问作者zxf18682
相关产品推荐
相关产品推荐

