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

Find every occurrence of a regex in a string

本文关键字:正则表达式 字符串 查找      更新时间:2023-09-26

在阅读了这篇文章和这个文档之后,我试图编写一个函数,该函数将返回字符串中正则表达式的每次出现的索引(在这种情况下,每次出现一个数字)。我从上面链接的文档中获取了这段代码:

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)。为什么我当前的代码会无限循环?

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

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

这将已经找到整数。