【问题标题】:Regular Expression for email to check repetitive characters用于检查重复字符的电子邮件正则表达式
【发布时间】:2014-09-10 13:16:35
【问题描述】:

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

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

我们将不胜感激。

【问题讨论】:

  • 只是一条建议:放弃“域的第一部分至少 3 个字符” 要求。有少于 3 个字符的有效域名(例如 wp.pl)

标签: regex ng-pattern


【解决方案1】:

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

^(?!.*([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

【讨论】:

  • @Murali,是否可以仅在最后一部分电子邮件地址中的点(。)之后检查重复字符?
  • @Chirag:当然,只需将负前瞻移动到. 之后。查看更新后的答案。
【解决方案2】:

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

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

DEMO

【讨论】:

    猜你喜欢
    • 2010-11-03
    • 2010-11-18
    • 2023-03-14
    • 1970-01-01
    • 2017-06-07
    • 2017-10-05
    • 1970-01-01
    相关资源
    最近更新 更多