【问题标题】:Regex Multiple email validation正则表达式多个电子邮件验证
【发布时间】:2017-11-29 12:15:12
【问题描述】:

我想使用由; 分隔的正则表达式对特定域实施多个电子邮件验证。要求是只允许两个用分号分隔的电子邮件 ID。 我试过正则表达式

^([\w+-.%]+@domain+\.com[~]?){1,2}$

它工作正常,但它验证电子邮件后跟 ; 。它应该如下工作

1) abc@domain.com 有效

2) abc@domain.com;abc1@domain.com 有效

3) abc@domain.com; 无效

4) abc@domain.com;abc1@domain.com; 无效

如何使用正则表达式?

【问题讨论】:

  • 试试^[\w+.%-]+@domain\.com(?:;[\w+.%-]+@domain\.com)?$
  • 完美。它按预期工作。非常感谢 Wiktor
  • 但是,您没有指明环境。可能,您需要以特定方式声明正则表达式。

标签: regex email-validation


【解决方案1】:

试试:

"^([\w+.%-]+?@domain\.com)(;([\w+.%-]+?@domain\.com))?$"

它由地址1

组成

([\w+.%-]+?@domain\.com)

一个进一步的地址

(;([\w+.%-]+?@domain\.com))?

"^...$" 表明周围没有其他字符。

Group 1Group 3 将包含地址

Test here

【讨论】:

  • 您的正则表达式允许ab,,,,,,,c@domain.com;ab,,,,,c1@domain.com。不确定是否符合预期。
  • 谢谢!你是对的-属于[...]的末尾
  • 是的,正是我的建议。实际上,您也可以将连字符放在字符类的开头。
  • 或者使用反斜杠...\- :)
  • 不,转义并不总是一个好主意。它不适用于 POSIX 和具有 ECMAScript 风格的 C++ std::regex
猜你喜欢
  • 2012-01-01
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-11
  • 2011-10-27
相关资源
最近更新 更多