在string.replace中转义数字

时间:2017-09-27 20:29:05

标签: javascript regex

我有一段代码在正则表达式中使用匹配组来操作字符串。

something = mystring.replace(someRegexObject, '$1' + someotherstring);

这个代码在大多数情况下工作正常但是当someotherstring有一个数值时我遇到了问题...然后它与$ 1连接,搞乱了组匹配。

我是否有一种简单的方法可以逃避someotherstring的内容以将其与匹配组分开?

1 个答案:

答案 0 :(得分:3)

问题解释

问题不是最清楚,但我想我理解你的问题。

在JavaScript中使用正则表达式,实际上,如果 - 并且仅当 - 有少于$10个组可用时,您可以使用10代替捕获组1。有关此示例,请参阅下面的代码段。

const regex = /(\w+)/g;
const str = `something`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, '$10');

console.log('Substitution result: ', result);

不幸的是,我相信你有一个正则表达式,如果你正在查看上面的例子,它会捕获超过X10。看到它在下面的代码段中返回错误的值。

const regex = /(\w+)((((((((()))))))))/g;
const str = `something`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, '$10');

console.log('Substitution result: ', result);

解决方案

为了解决这个问题,你必须更改你的Javascript代码,以便在替换字符串的位置实现一个函数,如下面的代码片段所示。

const regex = /(\w+)((((((((()))))))))/g;
const str = `something`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, function(a, b) {
  return b+'0';
});

console.log('Substitution result: ', result);