我有一个像这样的正则表达式模式:
([0-9]*)xyz
我希望像这样进行替换:
$10xyz
问题是
$1
是一个捕获组,而 0
只是我想放入替换中的数字。但正则表达式认为我要求捕获组 $10
而不是 $1
,然后在其后面加一个零。
如何引用捕获组并立即在其后跟上数字?
在本例中使用 JavaScript。
更新 正如下面指出的,我的代码运行良好。我使用的正则表达式测试器被意外设置为 PCRE 而不是 JavaScript。
您的代码确实运行得很好。在 JavaScript 正则表达式替换语法中,
$10
引用捕获组10
。但是,如果尚未设置组 10
,则会插入组 1
,然后插入文字 0
。
var r = '123xyz'.replace(/([0-9]*)xyz/, '$10xyz');
console.log(r); //=> "1230xyz"
你的代码确实可以工作,除非我遗漏了一些东西:
var str = "3xyz";
var str1 = str.replace(/([0-9]*)xyz/, "$10xyz");
alert(str1); // alerts 30xyz
虽然这可能适用于 Javascript 正则表达式,但它仍然不适用于 PCRE
如果有人需要 PCRE 解决方案,您可以使用
${1}0xyz
或者只使用命名的捕获组
(?<num>[0-9]*)xyz
${num}0xyz