【发布时间】:2013-11-16 15:20:05
【问题描述】:
以下是我的正则表达式模式。我正在使用它来验证电子邮件地址。
^[\\w]+(\\.|\\_)?[\\w]+\\@{1}[\\w]+\\.{1}(([A-Za-z]+)|(\\.{1}[A-Za-z]+))$
电子邮件 ID 必须遵循以下规则。
1. 在 1 个句点或下划线之前包含任意数量的字母或数字。
2. 1个@前跟任意数量的字母或数字。
3. 1 个句点前后跟任意数量的字母或数字。
4.(后跟任意数量的字母)或(1个句点和任意数量的字母)。
我遇到了第四条规则的问题。它适用于以 @xyz.abc 结尾的电子邮件 ID,但不适用于 @xyz.abc.ab
难道不能像我做的那样为第四条规则分组模式吗?
解决方案:
"^[A-Za-z0-9]+[\\._][A-Za-z0-9]+@[A-Za-z0-9]+(?:\\.[A-Za-z]+){1,2}$"
【问题讨论】:
-
将规则 4 修改为“后跟任意数量的句点组,后跟字母”,这相当于原始要求,但更容易编写正则表达式。我在下面的答案中包含了正确的正则表达式。
-
可以按照您的做法对第四条规则的模式进行分组,但生成的正则表达式会很丑陋。下面的两个答案都有更简单的正则表达式。