1

如何使用前瞻断言按范围限制“/”的数量

我已经厌倦了以下

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

但它不起作用

4

2 回答 2

3

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

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

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

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

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

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

  • ^- 字符串的开始。
  • [^/]*- 一些不是斜杠的字符(或没有)
  • (?: )- 一个逻辑组。类似于(),但不捕获结果(验证后我们不需要它)
  • /[^/]*- 斜线,后跟非斜线字符。
  • {0,3}- 从 0 到 3 次。
  • $- 字符串的结尾。
于 2012-06-05T09:07:01.400 回答
1

您可以尝试以下方法(您必须说应该没有 / 之后):

^(?=/{1,3}([^/]|$))
于 2012-06-05T08:29:22.113 回答