正则表达式字符串不包含连续2个点

时间:2016-12-15 12:34:19

标签: regex

我想知道这个正则表达式是否正确用于检查字符串是否以点开头,不以点结尾并且在任何地方都包含至少一个点但不是开始或结束:

我的问题是,我无法确定如何连续检查是否有2个点。

/ ^([^。])+([。])+。*([^。])$ /

2 个答案:

答案 0 :(得分:4)

似乎你需要使用

^[^.]+(?:\.[^.]+)+$

请参阅regex demo

<强>详情:

  • ^ - 字符串开头
  • [^.]+ - 除.以外的1个字符(因此,第一个字符不能为.
  • (?:\.[^.]+)+ - 1个或更多(因此,字符串中的点必须至少出现一次)序列:
    • \. - 一个点
    • [^.]+ - .以外的1个字符(+量词使得.以外的字符在点后至少出现一次,因此无法使用将字符串与末端的2个点匹配)
  • $ - 字符串结束。

答案 1 :(得分:2)

您已经关闭,请尝试使用:

^[^.]+(?:\.[^.]+){2,}$

它匹配具有2个或更多点的字符串,但不是在开头或结尾处。

如果你想要一个或多个点:

^[^.]+(?:\.[^.]+)+$

如果你想要一个或两个点:

^[^.]+(?:\.[^.]+){1,2}$