Regex 使用正则表达式防止顺序重复字符

Regex 使用正则表达式防止顺序重复字符,regex,Regex,我正在努力学习正则表达式。我写了这个正则表达式 ^[a-zA-Z]{1}[a-zA-Z0-9.]*@{1}([a-z]+).[a-z]{2,5}$ 事实上,我不会把它用作电子邮件验证程序。只是测试。 该正则表达式的结果如下: exchange@stack.com // match s.@.com // not @overflow.c@com // not stack..@o.net /

我正在努力学习正则表达式。我写了这个正则表达式

^[a-zA-Z]{1}[a-zA-Z0-9.]*@{1}([a-z]+).[a-z]{2,5}$
事实上,我不会把它用作电子邮件验证程序。只是测试。
该正则表达式的结果如下:

exchange@stack.com          // match
s.@.com                     // not
@overflow.c@com             // not
stack..@o.net               // match
stackov@@.com               // not
@overflow.com@s.stack       // not
1#stack.@s.com              // not
但正如您所看到的,
stack..@o.net
也被称为有效表达式。 如何检测字符串中顺序重复的
s?

  • 在正则表达式中不需要
    {1}
  • 你需要在正则表达式中转义dot
如果您的正则表达式支持,则可以使用此正则表达式:

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

嗯,电子邮件地址的最简单形式如下:

^\w+@(\w+\.)+\w+$
说明:

  • (字符串的开头=
    ^
  • 匹配任何字符
  • 后跟
    @
  • 匹配任意字符,后跟一个点(尽可能多次)
  • 匹配任何字符(=tld,如
    .com
    .org
    等)
  • (字符串末尾=
    $
演示:


[a-zA-Z0-9.]
=>
([a-zA-Z0-9]|)(?作为您链接的网站,
?!
表示某些内容后面没有任何内容,但我无法理解您的正则表达式中的
(?!..\.\.\.\.\.\.\.\.
表示匹配正则表达式。输入中的任何地方都没有
(因为后面跟着
*?