文件名称:js 正则学习小记之匹配字符串字面量优化篇
文件大小:152KB
文件格式:PDF
更新时间:2023-12-12 07:15:31
js 优化 字符
昨天在《js 正则学习小记之匹配字符串字面量》谈到 /”(?:\\.|[^”])*”/ 是个不错的表达式,因为可以满足我们的要求,所以这个表达式可用,但不一定是最好的。 从性能上来说,他非常糟糕,为什么这么说呢,因为 传统型NFA引擎 遇到分支是从左往右匹配的, 所以它会用 \\. 去匹配每一个字符,发现不对后才用 [^”] 去匹配。 比如这样一个字符串: “123456\’78\”90” 共 16 个字符,除了第一个 ” 直接匹配成功,还剩余 15 个,只有 2 个转义(4 个字符),所以 \\. 会失败 10 次,只有 2 次成功。 这 10 次匹配失败,需要回溯后用 [^”] 才能匹配成