如何匹配逗号分隔的电子邮件列表与正则表达式?

rom*_*n m 14 c# regex asp.net

尝试在文本框中验证以逗号分隔的电子邮件列表asp:RegularExpressionValidator,请参阅以下内容:

<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
                    runat="server" ErrorMessage="Wrong email format (separate multiple email by comma [,])" ControlToValidate="txtEscalationEmail"
                    Display="Dynamic" ValidationExpression="([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4},?)" ValidationGroup="vgEscalation"></asp:RegularExpressionValidator>
Run Code Online (Sandbox Code Playgroud)

当我在http://regexhero.net/tester/上测试时,它工作得很好,但它在我的页面上不起作用.

这是我的示例输入:

test@test.com,test1@test.com
Run Code Online (Sandbox Code Playgroud)

我在这篇文章中尝试了一个建议,但无法让它发挥作用.

ps我不想讨论正确的电子邮件验证

Mat*_*att 19

此正则表达式将允许逗号后面带空格的电子邮件.

^[\W]*([\w+\-.%]+@[\w\-.]+\.[A-Za-z]{2,4}[\W]*,{1}[\W]*)*([\w+\-.%]+@[\w\-.]+\.[A-Za-z]{2,4})[\W]*$
Run Code Online (Sandbox Code Playgroud)

为此,一位同事提出了更准确的RegEx.上面的答案似乎通过电子邮件地址列表,其中第一个元素不是电子邮件地址.这是更新,它还允许逗号后面的空格.

  • 要允许长域扩展,请使用`^ [\ W]*([\ w +\ - .%] + @ [\ w\ - .] + \.[A-Za-z] + [\ W]*, {1} [\ W]*)*([\ w +\ - .%] + @ [\ w\ - .] + \.[A-Za-z] +)[\ W]*$`我在哪里用+替换{2,4}限制 (6认同)
  • 此正则表达式接受“.” 或结尾处有空格和任何特殊字符。例如:“abc@qwe.com”。 (2认同)
  • 可以确认@mithun_daa 的发现,它允许在末尾使用逗号或特殊字符。 (2认同)

Don*_*nut 17

试试这个:

^([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4},?)+$
Run Code Online (Sandbox Code Playgroud)

+在括号后添加意味着前面的组可以存在1次或更多次.

添加^$表示字符串的开头和匹配的开始(或匹配的结束和字符串的结尾)之间的任何内容都会导致验证失败.

  • 不.不行.允许示例@ domain.comexample @ domain.com (6认同)
  • 此正则表达式还将匹配两者之间没有逗号的电子邮件:"test @ test.com,test1 @ test.comtest2 @ test.com".因此这个正则表达式不起作用. (5认同)

Lax*_*sad 9

被选为最佳匹配的第一个答案abc@xyz.comxyz@abc.com是无效的字符串。

以下正则表达式非常适用于逗号分隔的电子邮件 ID。

^([\w+-.%]+@[\w.-]+\.[A-Za-z]{2,4})(,[\w+-.%]+@[\w.-]+\.[A-Za-z]{2,4})*$
Run Code Online (Sandbox Code Playgroud)

它将匹配单个 emailId,逗号分隔的 emailId,但如果缺少逗号则不匹配。

第一组将匹配单个 emailId 的字符串。'*' 标记可选地要求第二组,即 0 或更多数量的此类组,但 ',' 需要位于此类 emailId 的开头,这使得逗号分隔的 emailId 与上述正则表达式匹配。