2014-09-10 50 views
1

我使用正则表达式验证电子邮件地址。我想测试的条件如下:在名称,符号@用于检查重复字符的电子邮件的正则表达式

最低的3

字符,最少3个字符的域名,一个点,第一部分不超过3个重复字符

我试着这个正则表达式,并且对于除了最后一个以外的所有情况都可以正常工作

/^[A-Za-z0-9._%+-]{3,}\@[A-Za-z0-9.-]{3,}\.[A-Za-z]{2,4}$/ 

它不检查点

不正常后重复字符(任何字符)(。):测试@测试。 ccccom[email protected]

确定:[email protected]

不知道什么是错的我的RE的最后一部分。

任何输入将不胜感激。

+0

仅有一个忠告:滴“在结构域的第一部分的最小3个字符” *要求*。有少于3个字符的有效域名(例如wp.pl) – 2014-09-10 13:25:24

回答

2

您可以使用以下正则表达式:

^(?!.*([A-Za-z0-9])\1{3})[A-Za-z0-9._%+-]{3,}\@[A-Za-z0-9-]{3,}\.[A-Za-z]{2,4}$ 

所做的更改:

(?!.*([A-Za-z0-9])\1{3}) - 这是一种消极的前瞻,使得确保没有字符连续重复三次相比更多。

除了从第二个字符类中删除.之外,正则表达式的其余部分与它相同。

RegEx Demo


如果你想在最后.后,不允许重复字符,那么你可以改用以下:

^[A-Za-z0-9._%+-]{3,}\@[A-Za-z0-9-]{3,}\.(?!([A-Za-z0-9])\1{3})[A-Za-z]{2,4}$ 

RegEx Demo

+0

@Murali,是否可以在最后一部分的电子邮件地址中的点(。)之后检查重复字符? – Chirag 2014-09-10 13:29:41

+0

@Chirag:当然,只要将负向前视移动到'.'后面即可。查看更新后的答案。 – 2014-09-10 13:41:50

+0

@Murali,非常感谢。它工作正常。 – Chirag 2014-09-11 10:08:18

0

这会不会让更多比最后一个点之后的三个重复字符,

^[A-Za-z0-9._%+-]{3,}\@[A-Za-z0-9.-]{3,}\.(?:(?!(.)\1{3})[a-zA-Z]){2,4}$ 

DEMO

相关问题