表现不佳的正则表达式

Kie*_*ron 2 javascript regex performance

我的表现非常糟糕,目前正在使Firefox,Chrome和IE挂起一段时间.

这是注册表:

 ^([a-zA-Z0-9]+[/]?)+[a-zA-Z0-9]+$
Run Code Online (Sandbox Code Playgroud)

它是一种url匹配器,但应该只匹配请求的路径(不是以斜杠开头或以斜杠结尾).

有效示例:

  • 分割
  • 段/网段
  • 细分/细分/细分(等)

示例无效:

  • /分割
  • 分割/
  • 段/网段/

在上述所有三个浏览器上使用正则表达式并使用两个或多个斜杠会导致浏览器挂起.

这显然是一个形成不良的注册表,但任何人都可以帮助建立一个更好的注册表吗?

谢谢,

Wel*_*bog 7

更好的一个是更确定的,没有捕获组:

^[a-zA-Z0-9]+(?:/[a-zA-Z0-9]+)*$
Run Code Online (Sandbox Code Playgroud)

这样您就没有重叠的组,并且您没有不必要地捕获事物.