使用正则表达式防止连续重复的字符

时间:2014-03-05 13:21:05

标签: 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               // match
stackov@@.com               // not
@overflow.com@s.stack       // not
1#stack.@s.com              // not

但如您所见,stack..@o.net也称为有效表达式。 如何检测字符串中依次重复.的那些?

2 个答案:

答案 0 :(得分:2)

  • 您的正则表达式中不需要{1}
  • 你需要在正则表达式中转义点。

如果您的正则表达式支持lookahead feature,那么您可以使用此正则表达式:

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

答案 1 :(得分:1)

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

^\w+@(\w+\.)+\w+$

说明:

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

演示:

http://regexr.com?38edd