【问题标题】:Make Email Regex Comma Delimited使电子邮件正则表达式逗号分隔
【发布时间】:2014-12-10 15:46:12
【问题描述】:

我有以下正则表达式来验证单个电子邮件地址。如何让这个正则表达式接受以逗号分隔的电子邮件地址列表?

^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$

我正在使用剃刀视图将正则表达式放在输入标签中:

<input data-val="true" data-val-length="Email field exceeds maximum length of 50" data-val-length-max="50" data-val-regex="Email-Address is invalid" data-val-regex-pattern="^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$" id="Email" name="Email" type="text" value="">

【问题讨论】:

  • 为什么不用逗号分割字符串,然后分别测试每个邮件地址?
  • 为什么你的正则表达式包含空格?
  • Avinash - 我认为空格只是在此页面上输入时的换行符。修好了。
  • Deblaton - 我正在尝试保持与单个电子邮件地址验证相同的工作流程。
  • 不要将 TLD 限制为 {2,6}$ 许多超过 6 个字符

标签: javascript c# asp.net regex razor


【解决方案1】:

如果你只有内部可选的逗号分隔列表,它通常像
(?:my regex)(?:,my regex)*

 #  ^(?:[A-Za-z0-9]+[_.+-]+)*[A-Za-z0-9]+@(?:\w+[.-]+)*\w{1,63}\.[a-zA-Z]{2,6}(?:,(?:[A-Za-z0-9]+[_.+-]+)*[A-Za-z0-9]+@(?:\w+[.-]+)*\w{1,63}\.[a-zA-Z]{2,6})*$

 ^ 
 (?: [A-Za-z0-9]+ [_.+-]+ )*
 [A-Za-z0-9]+ 
 @
 (?: \w+ [.-]+ )*
 \w{1,63} \. [a-zA-Z]{2,6} 
 (?:
      ,
      (?: [A-Za-z0-9]+ [_.+-]+ )*
      [A-Za-z0-9]+ 
      @
      (?: \w+ [.-]+ )*
      \w{1,63} \. [a-zA-Z]{2,6} 
 )*
 $

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-22
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    相关资源
    最近更新 更多