SeT*_*ToY 23 c# regex email validation rfc
我有一个正则表达式验证我的邮件地址,如下所示:
([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)
这完全正常,但只允许输入一封电子邮件.现在我想扩展它并允许添加多个邮件地址(例如,就像MS Outlook一样),并使用分号作为邮件分割器.
mail1@tld.com;mail2@tld.com;mail3@tld.com
现在我搜索并找到了这个:
([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}(;|$))
这在一点上有效,但遗憾的是在邮件末尾需要一个分号:
mail1@tld.com;
Run Code Online (Sandbox Code Playgroud)
当用户只输入一封电子邮件时,这不是我想要的.
如何扩展我的正则表达式(第一个)以允许添加多个邮件地址,同时让它们通过分号分割?
Jot*_*aBe 54
这是您的原始表达式,已更改为允许使用分号和(可选)除分号之外的空格分隔的多封电子邮件.它还允许单个电子邮件地址不以分号结尾.
这允许空白条目(没有电子邮件地址).您可以将最终*更改为+以至少需要一个地址.
(([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)(\s*;\s*|\s*$))*
Run Code Online (Sandbox Code Playgroud)
如果你需要允许逗号,除了分号,你可以使用这个组:
(\s*;\s*|\s*$)
Run Code Online (Sandbox Code Playgroud)
通过这个:
(\s*(;|,)\s*|\s*$)
Run Code Online (Sandbox Code Playgroud)
重要提示:作为Martin评论中的状态,如果在正确的电子邮件地址列表之前或之后有其他文本,则验证不会失败.所以它可以作为"电子邮件搜索者".要使其作为验证器工作,您需要^
在正则表达式的开头添加,$
最后添加.这将确保表达式匹配所有文本.所以完整的reex将是:
^(([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)(\s*;\s*|\s*$))*$
Run Code Online (Sandbox Code Playgroud)
您可以在列表开头的容差空白\s*
之后添加额外^
的内容,就像这样.即包括^\s*
而不是简单^
表达式已经在最后容忍空白.
旧帖子 - 需要相同的 RegEx。接受的答案对我不起作用,但是,确实如此。
^(|([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$
Run Code Online (Sandbox Code Playgroud)
然而,从这篇文章中检索到的,接受的答案也不起作用,但帖子内链接上的正则表达式起作用了。
abc@abc.com
- 验证
abc@abc.com;123@qwer.com
- 验证
abc@abc.com;
- 不验证
empty string
- 验证
如果要针对空字符串进行验证,请删除|
正则表达式开头的
请尝试这个
^([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4};?)+$
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37190 次 |
最近记录: |