用引用替换匹配组的Javascript?


228

我有一个字符串,例如hello _there_。我想分别使用JavaScript<div></div>分别替换两个下划线。(因此)输出看起来像。该字符串可能包含多对下划线。hello <div>there</div>

我所寻找的是一个方法来无论是运行在每场比赛,红宝石做它的方式的函数:

"hello _there_".gsub(/_.*?_/) { |m| "<div>" + m[1..-2] + "</div>" }

能够再次引用匹配的组,就像在ruby中一样:

"hello _there_".gsub(/_(.*?)_/, "<div>\\1</div>")

有什么想法或建议吗?

Answers:


384
"hello _there_".replace(/_(.*?)_/, function(a, b){
    return '<div>' + b + '</div>';
})

哦,或者您也可以:

"hello _there_".replace(/_(.*?)_/, "<div>$1</div>")

10
Javascript是否使用$1代替\1?有人会提供文档链接吗?
daveloyall 2014年

3
replacementValue可以是一个函数,并根据捕获组传递不同的参数?惊人!
daveloyall 2014年

4
我发现\ 1的工作,但$ 1没有,虽然我使用正则表达式的变化:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
JSH

1
@CalculatorFeline说“正则表达式本身”并不能识别哪个正则表达式,因为有人可能会尝试使用正则表达式进行替换。必须有许多人尝试这样做:"hello _there_".replace(/_(.*?)_/, /<div>\1<\/div>/)
斯图尔特


35

您可以使用replace代替gsub

"hello _there_".replace(/_(.*?)_/g, "<div>\$1</div>")

19
您可以删除反斜杠。
CalculatorFeline

7

对于由指定的替换字符串和替换模式$。这是简历:

在此处输入图片说明

链接到doc:这里

"hello _there_".replace(/_(.*?)_/g, "<div>$1</div>")



注意:

如果要$在替换字符串中使用,请使用$$。与vscode代码段系统相同。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.