gpt4 book ai didi

javascript - javascript 结果的原因是什么?

转载 作者:行者123 更新时间:2023-11-29 22:06:06 24 4
gpt4 key购买 nike

var re1=new RegExp("","g");
var str1="a";
console.log(str1.match(re1));

var re2=new RegExp("","g");
var str2="a";
console.log(re2.exec(str2));
console.log(re2.exec(str2));

为什么第一个会捕获两个空字符串,而第二个只能包含一个空字符串?

最佳答案

简而言之:它没有。

js> var re1 = new RegExp("", "g");
js> var str1 = "a";
js> str1.match(re1)
["", ""]
js> var re2 = new RegExp("", "g");
js> var str2 = "a";
js> re2.exec(str2)
[""]
js> re2.exec(str2)
[""]

这些 [""] 中的每一个都是一个结果,因为 exec 意味着在循环中调用并检索所有匹配 所有组,如:

var pairs = /(.).*?\1/g;
var input = "._. ^.^ -__-";
var match;

while (match = pairs.exec(input)) { // exec() returns null on /g regexes when there are no more matches
console.log(match);
}

一个更有趣的问题可能是为什么 re2.lastIndex 在匹配后不会改变,所以你可以永远得到相同的匹配并且它永远不会是 null。好吧,那只是因为它每次匹配都会按匹配的长度前进,而这里的长度为零。

关于javascript - javascript 结果的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20916168/

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