【问题标题】:Regex replace with number after capture group?正则表达式替换为捕获组后的数字?
【发布时间】:2015-01-02 16:56:12
【问题描述】:

我有一个这样的正则表达式模式:

([0-9]*)xyz

我希望这样替换:

$10xyz

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

我如何引用一个捕获组并在其后面紧跟一个数字?

在这种情况下使用 JavaScript。

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

【问题讨论】:

标签: regex


【解决方案1】:

您的代码确实可以正常工作。在 JavaScript 正则表达式替换语法 $10 引用捕获组 10。但是,如果未设置组 10,则会插入组 1,然后插入文字 0

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

【讨论】:

  • 你是对的。抱歉,我使用的测试仪设置为使用 PCRE 而不是 JS。
【解决方案2】:

除非我遗漏了什么,否则您的代码会 work

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

【讨论】:

  • 你是对的。抱歉,我使用的测试仪设置为使用 PCRE 而不是 JS。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-24
  • 2014-06-19
  • 2010-11-19
  • 1970-01-01
  • 1970-01-01
  • 2010-11-19
  • 2020-09-14
相关资源
最近更新 更多