如果捕获组等于replace()中的某些内容,如何检查正则表达式替换?

时间:2015-12-30 11:05:26

标签: javascript regex

我有一个字符串,想要用regex替换它中的值,并根据捕获组的结果提供替换。

即,考虑这个例子:

var thing = "thing 1";
var result = thing.replace(/\w+ (\d+)/g,"$1");

在这种情况下,结果为1,因为替换采用捕获组1的匹配。现在我想将第一个捕获组的结果与1进行比较,并用{替换{1}},如果是the first,则为1。在伪代码中,像这样:

a

我该怎么做呢?

请注意,我提供的代码只是一个示例(所以请不要建议像空格分割和获取数字等),我希望解决方案能够使用更复杂的正则表达式。

1 个答案:

答案 0 :(得分:2)

使用String#replace回调:

thing.replace(/\w+ (\d+)/g, function (completeMatch, firstCapturedGroup) {
    return firstCapturedGroup == "1" ? "the first" : "a";
});



var thing = "thing 1";
var result = thing.replace(/\w+ (\d+)/g, function(e, firstCapturedGroup) {
  return firstCapturedGroup == "1" ? "the first" : "a";
});
document.write(result);