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