gpt4 book ai didi

javascript - 为什么将 JavaScript 正则表达式保存到变量会在调用 .test() 方法时产生不同的结果?

转载 作者:行者123 更新时间:2023-11-29 18:12:49 26 4
gpt4 key购买 nike

有人可以解释为什么将此正则表达式保存到变量会产生交替的 true 和 false 值,但使用文字每次都会产生 true 吗?我在这里遗漏了一些明显的东西吗?我当然不是正则表达式专家,但这对我来说似乎很奇怪。

var exp = /[\^~\\><\|"]/g;

exp.test('<abc'); // true

exp.test('<abc'); // false

exp.test('<abc'); // true

exp.test('<abc'); // false

/[\^~\\><\|"]/g.test('<abc'); // true

/[\^~\\><\|"]/g.test('<abc'); // true

/[\^~\\><\|"]/g.test('<abc'); // true

/[\^~\\><\|"]/g.test('<abc'); // true

CodePen Demo (check the console)

最佳答案

这是因为正则表达式对象保存它们的状态,所以当你对同一个对象调用测试再次时,它会尝试找到下一个匹配失败。

来自docs :

test called multiple times on the same global regular expression instance will advance past the previous match.

在最后的示例中,您每次都在创建一个正则表达式,因此它每次都匹配。

关于javascript - 为什么将 JavaScript 正则表达式保存到变量会在调用 .test() 方法时产生不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25778617/

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