1

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

名称最少 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 的最后一部分有什么问题。

任何输入将不胜感激。

4

2 回答 2

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})- 这是一个负前瞻,确保没有一个字符连续重复三次以上。

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

正则表达式演示


如果您想在 last 之后禁止重复字符.,那么您可以使用以下内容:

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

正则表达式演示

于 2014-09-10T13:21:46.993 回答
0

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

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

演示

于 2014-09-10T13:36:42.587 回答