正则表达式不允许两个或两个以上点的匹配?

时间:2018-10-28 09:43:08

标签: regex regex-negation regex-lookarounds

现在我有一个字符串列表,其中一些字符串中包含连续的点。我想匹配除带有连续点的那些字符串以外的所有内容。例如:

fo.o.ba.r = legal --> fo..obar != legal

这是我尝试使用的正则表达式,但是它似乎并没有达到我的预期。

(?!\.{2,})

这里有人可以让我走上正确的道路吗?谢谢!

2 个答案:

答案 0 :(得分:1)

从字符串的开头到字符串的结尾,重复组中的任何字符,同时对两个点使用负前瞻:

^(?:(?!\.{2}).)+$

https://regex101.com/r/M5nhk7/1

答案 1 :(得分:0)

您可以使用负前瞻从字符串的开头断言右边的内容不包含2个点:

^(?!.*\.{2}).+$

Regex demo

这将匹配:

  • ^断言字符串的开头
  • (?!负向超前
    • .*匹配任意字符0次以上
    • \.{2}匹配一个点2次
  • )近距离否定预测
  • .+匹配任意字符1次以上
  • $声明字符串的结尾