作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想用另一个字符串替换一个字符串。我的问题是,搜索字符串是一个变量,我需要为此设置一个组,因为我想重用原始匹配字符串。
const string = 'Any string with many words'
const label = 'any'
const re = new RegExp(label, 'gi')
string = string.replace(
re,
'>>>' + $1 + '<<<'
)
console.log(string)
// Expect: >>>Any<<< string with m>>>any<<< words
最佳答案
您需要在 string 替换模式中使用反向引用。此外,要访问整个匹配值,您需要使用 $&
反向引用,而不是 $1
。 $1
反向引用将在您使用圆括号围绕整个模式时起作用(例如 new RegExp(`(${label})`, 'gi')
),但您确实这样做了不需要,因为有一个方便的 $&
反向引用。参见 Specifying a string as a parameter .
let string = 'Any string with many words';
const label = 'any';
const re = new RegExp(label, 'gi');
string = string.replace(
re,
'>>>$&<<<'
)
console.log(string)
请注意,如果您需要修改其值,则不应将 string
声明为 const
(我在上面使用了 let
)。
请注意,如果您的 label
包含特殊的正则表达式字符,最好使用 escape the label
value .
关于javascript - JS/正则表达式 : How to set group in a regex for multiple replacement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44717142/
我是一名优秀的程序员,十分优秀!