【问题标题】:Allow spaces between emails in regex在正则表达式中允许电子邮件之间的空格
【发布时间】:2019-11-24 14:38:46
【问题描述】:

我正在使用此正则表达式验证电子邮件,例如“email1@domain.com”:

^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$

现在我需要验证带有空格的电子邮件以允许多封电子邮件,例如:“email1@domain.com email2@domain.com email3@domain.com email4@domain.com”

对此有何改进或帮助? 这是针对 Java 的。 注意:我需要一个正则表达式,因为我使用 JSON SCHEMA 验证来验证 JSON 的字段,我无法验证每封电子邮件的电子邮件。

^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$

【问题讨论】:

  • 为什么不使用空格字符作为分隔符拆分字符串,然后一次验证一个?
  • 嗨 Ahmed。我无法拆分,因为我正在使用 JSON SCHEMA 验证。我将 JSON 发送到我的 api 并验证每个 jsonshcema 的字段,在电子邮件的 shcema 中我配置了一个模式。我无法拆分字符串。

标签: java regex email


【解决方案1】:

好吧,一种方法是将^ 替换为(?:^|[ ]),将$ 替换为(?=$|[ ]),然后如果您想“捕获”电子邮件,而不仅仅是验证它们,则将您的原始模式放入捕获组中(即(?:^|[ ])(YourOriginalPatter)(?=$|[ ]))。

这是一个使用您的模式的示例:

(?:^|[ ])([a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7})(?=$|[ ])

Demo.

【讨论】:

    【解决方案2】:

    另一种方法是,您只需使用捕获组重复完整的模式

    ^(([wW]{3}.)*[a-zA-Z0-9_+&*-]+@[a-zA-Z0-9-]+\.[a-zA-Z]{2,7} *){1,}$
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 2011-07-27
      • 1970-01-01
      • 2013-03-06
      相关资源
      最近更新 更多