将递增数字添加到重复字符串的替换方法

Replace method that adds an incrementing number to a repeated string

我有一个包含一堆 <a id="r"></a> 标签的文档,我想为每个标签添加一个递增的数字,所以,<a id="r1"></a>... <a id="r2"></a>,等等。循环我目前拥有的,似乎不起作用。

function(doc) {
    for (var i = 1; i <= doc.length; i++) {
      var number = 1;
      return doc.replace(/<a id=""><\/a>/, '<a id="page' + number + '"></a>');
      number += 1
};},

如果在循环中 return,它不会重复多次。

您正在循环内设置 var number = 1;。你已经有一个带 i 的整数,所以使用 + i +,你将在循环内返回。

我认为你不想循环。尝试使用替换模式中的递增数字执行全局正则表达式:

function(doc) {
    var number = 1;
    return doc.replace(/(<a\s+[^>]*id="r)("[^>]*>[^<]*<\/a>)/gi, function(m, a, b) {
        return a + (number++) + b;
    });
};

这会查找任何带有 id="r"<A> 标签,保持它们的内容和属性相同,但将 r 更改为 r1r2 , r#。这是你想要的吗?

尝试在循环外声明 number

function(doc) {
  var number=1;
  for (var i=1;i<=doc.length;i++) {
    return doc.replace(/<a id=""><\/a>/,'<a id=\"page'+number+'\"></a>');
    number+=1;
  }
},