正则表达式防止多个“。”

时间:2017-10-29 11:05:11

标签: regex validation

我试图制作一个正则表达式声明来验证电子邮件地址。 这是我目前的陈述:

[a-z|A-Z|.]+@[a-z|A-Z]+\.[a-z]{3}\.[a-z]{2}

我一直试图阻止它连续接受多个句号。但它没有任何一个。 我试过了:

\.(?!\.)

然而它承认第一个。作为与?无关的要求值!消极的向前看。有没有人知道一个基本/简单的否定前瞻(或任何其他方式来实现这一点),并能够解释它的作用。 这将非常感谢:) 感谢

1 个答案:

答案 0 :(得分:2)

您可以尝试以下正则表达式:

^(?!.*\.\.)[a-zA-Z.]+@[a-zA-Z]+\.[a-z]{3}\.[a-z]{2}$

我在开头添加了(?!.*\.\.),以确保整个正则表达式不会连续。

说明:

  1. ^你必须包括开始标记,这样你就不会得到任何部分 匹配你正在寻找的电子邮件。
  2. (?!.*\.\.)负面展望正则表达式以确保没有两个 fullstop跟随彼此。*确保它保持 寻找这种情况直到字符串结束。

  3. 如果满足上述条件,则意味着没有这样的重复 然后你提供的正则表达式生效。但是你已经在你的角色类中添加了[a-z|A-Z|.]个管道,它也将管道作为有效输入。在字符类中,您不需要按管道分隔序列,因此[a-zA-Z.]会这样做。

  4. $确保您之前的所有比赛都是......所以 ^ ..... $开始和结束标记确保格式完全 匹配(没有子匹配)。
  5. Demo