在阅读this post和this doc之后,我正在尝试编写一个函数,该函数将返回字符串中每个正则表达式的索引(在这种情况下,每次出现一个数字) )。我从上面链接的文档中获取了这些代码:
var myRe = /ab*/g;
var str = "abbcdefabh";
var myArray;
while ((myArray = myRe.exec(str)) != null)
{
var msg = "Found " + myArray[0] + ". ";
msg += "Next match starts at " + myRe.lastIndex;
print(msg);
}
把它变成了这个:
var myRe = /([0-9]*)/g;
var str = "gfarg h43kjh arjh 343";
var myArray;
while ((myArray = myRe.exec(str)) != null)
{
var msg = "Found " + myArray[0] + ". ";
msg += "Next match starts at " + myRe.lastIndex;
alert(msg);
}
哪个循环无限地显示相同的结果。我其实有两个问题。如何显示每个整个数字的索引(在我的示例字符串"gfarg h43kjh arjh 343"
中将为7和18)。而且,为什么我当前的代码无限循环?
答案 0 :(得分:2)
您的代码无限循环,因为您的正则表达式匹配空字符串。不要那样:)。尝试:
var myRe = /([0-9]+)/g;
这已经找到了整数。有关工作示例,请参阅http://jsfiddle.net/nrabinowitz/3aHxS/1/。