我有一个字符串,想要用regex替换它中的值,并根据捕获组的结果提供替换。
即,考虑这个例子:
var thing = "thing 1";
var result = thing.replace(/\w+ (\d+)/g,"$1");
在这种情况下,结果为1
,因为替换采用捕获组1的匹配。现在我想将第一个捕获组的结果与1
进行比较,并用{替换{1}},如果是the first
,则为1
。在伪代码中,像这样:
a
我该怎么做呢?
请注意,我提供的代码只是一个示例(所以请不要建议像空格分割和获取数字等),我希望解决方案能够使用更复杂的正则表达式。
答案 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);