首页 > 解决方案 > 为什么正则表达式匹配很慢?

问题描述

我正在用 JavaScript 学习正则表达式,这段代码似乎很慢。

/(a*a*)*b/.test("aaaaaaaaaaaaa")

对我来说,这似乎很简单,有人可以向我解释为什么会这样吗?

标签: javascriptregex

解决方案


就寻找匹配项所需的努力而言,正则表达式通常很慢。有些,在服务器端甚至可以被用于 DOS 攻击。

基本上每个正则表达式都是其自身逻辑的表示,一种实际表示匹配算法的语法。在您的情况下,它需要找出通配符扩展的匹配项。这是一个简单的正则表达式,但仍需要解释并检查输入。


推荐阅读