如何使用超前断言将范围限制为“/”
我已经厌倦了以下
^(?= / {1,3})$
但它不起作用
答案 0 :(得分:3)
最简单的解决方案是使用否定前瞻:
^(?!(?:[^/]*/){4})
这基本上意味着字符串不能包含4个斜杠。
这假设您允许斜杠之间的其他字符,但最多允许3个斜杠。
正面版本为^(?=[^/]*(?:/[^/]*){0,3}$)
或^[^/]*(?:/[^/]*){0,3}$
,没有前瞻。
当然,如果可能的话,如果没有正则表达式,这个问题是微不足道的。
让我们尝试打破最后一个:
^
- 字符串的开头。[^/]*
- 某些字符不是斜杠(或没有)(?: )
- 一个逻辑组。与()
类似,但不捕获结果(验证后我们不需要它)/[^/]*
- 斜线,然后是非斜线字符。{0,3}
- 从0到3次。$
- 字符串的结尾。答案 1 :(得分:1)
您可以尝试以下操作(您必须说不应该/之后):
^(?=/{1,3}([^/]|$))