【问题标题】:Regular expression for allow multiple email ids sepearted by comma,should not allow multiple commas at the end and in between two email ids允许多个电子邮件 ID 以逗号分隔的正则表达式,不应允许在末尾和两个电子邮件 ID 之间使用多个逗号
【发布时间】:2012-09-06 11:08:39
【问题描述】:

允许多个email id以逗号分隔的正则表达式,不应允许在末尾和两个email id之间使用多个逗号。

我的允许多个电子邮件 ID 的正则表达式是 ((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*([,])*)*

但它允许在电子邮件 ID 末尾和两个电子邮件 ID 之间使用多个逗号 例如:

 **test@abc.com,,test2@abc.com,,**

这是不允许的

【问题讨论】:

  • fnord+@example.com*@dk 在语法上也是有效的电子邮件地址。请不要再创建一个拒绝有效地址并允许无效地址的临时地址过滤器。

标签: .net regex


【解决方案1】:

您应该将 ([,])* 部分更改为 ([,])? 以允许在其中使用 0 或 1 个逗号而不是任意数量的逗号。

【讨论】:

  • 我们如何指定 no 的逗号需要?
  • * 和 ?将允许 0 个匹配项,即没有逗号。如果您希望在地址之间和最后一个逗号之后只使用一个逗号,则只需键入 (,)
【解决方案2】:

尝试将字符限制 {1} 放在 [,] 逗号大小写之后,如下所示..

((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*([,]{1})*)*

更新 1

我在正则表达式方面没有太多专业知识,但这会起作用,

^(.+@[^\.].*\.[a-z]{2,})(;.+@[^\.].*\.[a-z]{2,})*$

更新 2

^(\s*,?\s*[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})+\s*$

通行证

  • test@abc.com,test2@abc.com
  • test@abc.com test2@abc.com
  • test@abc.com
  • test@abc.com, test@abc.com

参考:

【讨论】:

  • 不,它没有按预期工作
  • No Hari,在 2 封邮件中间它接受双逗号,例如 test@abc.com,,test2@abc.com..它应该只接受一个逗号...
  • 试试新的正则表达式。这次我也添加了测试用例。
【解决方案3】:

我建议你这样做:

^(([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4}){1}($|\;([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4}))+)$

为了更好的解释(我在网络上连接了这么多建议的解决方案)我邀请您使用这个很棒的工具,它很好地解释了 RegExp 部分:

https://regex101.com/r/e09X7F/1

简而言之:

  • 我的值以邮件地址开始和结束

  • 我的值以一个邮件地址开头,后跟一个以“;”开头的邮件地址并以这对“;mail_address”结尾。

【讨论】:

    猜你喜欢
    • 2017-10-25
    • 2016-06-24
    • 2012-06-29
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多