javascript - 为什么正则表达式匹配很慢?
问题描述
我正在用 JavaScript 学习正则表达式,这段代码似乎很慢。
/(a*a*)*b/.test("aaaaaaaaaaaaa")
对我来说,这似乎很简单,有人可以向我解释为什么会这样吗?
解决方案
就寻找匹配项所需的努力而言,正则表达式通常很慢。有些,在服务器端甚至可以被用于 DOS 攻击。
基本上每个正则表达式都是其自身逻辑的表示,一种实际表示匹配算法的语法。在您的情况下,它需要找出通配符扩展的匹配项。这是一个简单的正则表达式,但仍需要解释并检查输入。
推荐阅读
- javascript - Javascript嵌套数组检查值是否存在
- android - 如何修复 Android 中 Manifest.xml 文件中暴露组件的漏洞
- php - 如何通过 php laravel 中的链接共享表单?
- mongodb - MongoDB 指南针不导出所有数据以供收集
- wordpress - WordPress帖子保存抛出“您所做的更改可能无法保存”
- java - Spring Web Project 无法在 tomcat 服务器环境中启动
- c++ - 为什么 operator== 对静态初始化的 char* 有效?
- sql-server - 使用 Entity Framework 的 ASP.NET Core 应用程序未使用集成安全性登录到 SQL 数据库
- regex - NSIS 使用正则表达式进行模式匹配。密码验证
- python - 从 requests.get() 的响应中检测数据包丢失