查找字符串中每次出现的正则表达式

时间:2011-10-25 19:17:35

标签: javascript regex

在阅读this postthis 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)。而且,为什么我当前的代码无限循环?

1 个答案:

答案 0 :(得分:2)

您的代码无限循环,因为您的正则表达式匹配空字符串。不要那样:)。尝试:

var myRe = /([0-9]+)/g;

这已经找到了整数。有关工作示例,请参阅http://jsfiddle.net/nrabinowitz/3aHxS/1/