用于检查重复字符的电子邮件的正则表达式

时间:2014-09-10 13:16:36

标签: regex ng-pattern

我正在使用正则表达式验证电子邮件地址。我想测试以下条件:

名称中最少3个字符,符号@,域名第一部分最少3个字符,一个点,不超过3个重复字符

我尝试了这个正则表达式,除了最后一个之外,它适用于所有情况。

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

点(。)

之后不检查重复字符(任何字符)

不行:test @ test。 ccccom ,test @ test.coooom

好的:test@test.com

不知道我RE的最后一部分有什么问题。

任何意见都将受到赞赏。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

在最后一个点之后,这将不允许超过三个重复的字符

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

DEMO