正则表达式在捕获组后用数字替换?

时间:2015-01-02 16:56:13

标签: regex

我有这样的正则表达式:

([0-9]*)xyz

我希望做这样的替换:

$10xyz

问题是$1是一个捕获组,而0只是我想要替换的数字。但是正则表达式认为我要求捕获组$10而不是$1,之后是零。

如何引用捕获组并立即使用数字进行跟踪?

在这种情况下使用JavaScript。

更新如下所述,我的代码运行正常。我使用的正则表达式测试程序被意外设置为PCRE而不是JavaScript。

2 个答案:

答案 0 :(得分:4)

你的代码确实很好用。在JavaScript中,正则表达式替换语法$10引用捕获组10。但是,如果尚未设置组10,则会在之后插入组1,然后插入文字 0

var r = '123xyz'.replace(/([0-9]*)xyz/, '$10xyz');
console.log(r); //=> "1230xyz"

答案 1 :(得分:1)

除非我遗漏了某些内容,否则您的代码会work

var str = "3xyz";
var str1 = str.replace(/([0-9]*)xyz/, "$10xyz");
alert(str1); // alerts 30xyz