gpt4 book ai didi

javascript - 正则表达式用作 RegExp() 时会使 Chrome 崩溃

转载 作者:行者123 更新时间:2023-11-28 02:18:28 25 4
gpt4 key购买 nike

有问题的正则表达式是:

/\[quote\]((?:[^](?!\[quote\]))*?)\[\/quote\]/gi

我要应用它的字符串是

[quote]Level 10
[quote]Level 9
[quote]Level 8
[quote]Level 7
[quote]Level 6
[quote]Level 5
[quote]Level 4
[quote]Level 3
[quote]Level 2
[quote]Level 1[/quote]
Level 2[/quote]
Level 3[/quote]
Level 4[/quote]
Level 5[/quote]
Level 6[/quote]
Level 7[/quote]
Level 8[/quote]
Level 9[/quote]
Level 10[/quote]

当我使用 RegExp() 创建它时,就像这样,Chrome 挂起:

new RegExp("\[quote\]((?:[^](?!\[quote\]))*?)\[\/quote\]", "gi")

还值得注意的是,这个正则表达式似乎无法被某些解析器正确解析,例如 http://regexpal.com/ .

我的目标是从内到外匹配引号(从最里面的一组开始,一直向外)。有人有修复正则表达式的想法,或者有其他方法来完成我想做的事情吗?

编辑:如果您想看到它正常运行,它确实可以在这里工作:http://regexr.com?34i3p

最佳答案

使用字符串创建正则表达式时,需要转义斜杠:

new RegExp("\\[quote\\]((?:[^](?!\\[quote\\]))*?)\\[\\/quote\\]", "i")

斜杠会被忽略,因此最终会得到像 [quote] 这样的字符类。
这些线索可能无法与 catastrophic backtracking 匹配。 ,不过说实话我不太明白怎么做。

关于javascript - 正则表达式用作 RegExp() 时会使 Chrome 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16045049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com