如何限制字符串中的“/”数

时间:2012-06-05 08:23:00

标签: java regex

如何使用超前断言将范围限制为“/”

我已经厌倦了以下

  

^(?= / {1,3})$

但它不起作用

2 个答案:

答案 0 :(得分:3)

最简单的解决方案是使用否定前瞻:

^(?!(?:[^/]*/){4})

这基本上意味着字符串不能包含4个斜杠。

这假设您允许斜杠之间的其他字符,但最多允许3个斜杠。

正面版本为^(?=[^/]*(?:/[^/]*){0,3}$)^[^/]*(?:/[^/]*){0,3}$,没有前瞻。 当然,如果可能的话,如果没有正则表达式,这个问题是微不足道的。

让我们尝试打破最后一个:

  • ^ - 字符串的开头。
  • [^/]* - 某些字符不是斜杠(或没有)
  • (?: ) - 一个逻辑组。与()类似,但不捕获结果(验证后我们不需要它)
  • /[^/]* - 斜线,然后是非斜线字符。
  • {0,3} - 从0到3次。
  • $ - 字符串的结尾。

答案 1 :(得分:1)

您可以尝试以下操作(您必须说不应该/之后):

^(?=/{1,3}([^/]|$))