javascript - 表现不佳的正则表达式

标签 javascript regex performance

我有一个性能非常差的正则表达式,目前它使 Firefox、Chrome 和 IE 挂起一段时间。

这是正则表达式:

 ^([a-zA-Z0-9]+[/]?)+[a-zA-Z0-9]+$

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

有效示例:

  • 分割
  • 分割市场
  • 段/段/段(等)

无效示例:

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

在所有三个浏览器上使用上面的正则表达式并使用两个或多个斜线会导致浏览器挂起。

这显然是一个格式不佳的正则表达式,但任何人都可以帮助构建一个更好的正则表达式吗?

谢谢,

最佳答案

更好的是更确定的,并且没有捕获组:

^[a-zA-Z0-9]+(?:/[a-zA-Z0-9]+)*$

这样您就不会有重叠的组,也不会捕捉到不必要的东西。

关于javascript - 表现不佳的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2691563/

相关文章:

performance - Scala 动态类管理

javascript - 从 requirejs 迁移到 es6 导入

Javascript。像 SQL 一样加入 2 组对象的最佳方法?

java - Pattern.matches() 给出 StackOverflowError

regex - VBA 文本文件搜索

javascript - 如何提高智能手机上表格过滤 JavaScript 的速度?

performance - ORM 解决方案(JPA;Hibernate)与 JDBC

javascript - 平滑滚动会奇怪地跳跃

javascript - 在 WebDriverJs 中选择下拉列表

php - 用于替换不在 HTML 标签内的内容的正则表达式