我有一段代码在正则表达式中使用匹配组来操作字符串。
something = mystring.replace(someRegexObject, '$1' + someotherstring);
这个代码在大多数情况下工作正常但是当someotherstring
有一个数值时我遇到了问题...然后它与$ 1连接,搞乱了组匹配。
我是否有一种简单的方法可以逃避someotherstring
的内容以将其与匹配组分开?
答案 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);
不幸的是,我相信你有一个正则表达式,如果你正在查看上面的例子,它会捕获超过X
(10
。看到它在下面的代码段中返回错误的值。
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);