Javascript参考匹配组替换?
Posted
技术标签:
【中文标题】Javascript参考匹配组替换?【英文标题】:Javascript replace with reference to matched group? 【发布时间】:2010-11-17 02:37:19 【问题描述】:我有一个字符串,例如hello _there_
。我想使用 JavaScript 分别用 <div>
和 </div>
替换两个下划线。输出将(因此)看起来像hello <div>there</div>
。该字符串可能包含多对下划线。
我正在寻找一种或者在每场比赛上运行一个函数的方法,就像 Ruby 那样:
"hello _there_".gsub(/_.*?_/) |m| "<div>" + m[1..-2] + "</div>"
或者能够引用匹配的组,同样可以在 ruby 中完成:
"hello _there_".gsub(/_(.*?)_/, "<div>\\1</div>")
有什么想法或建议吗?
【问题讨论】:
【参考方案1】:"hello _there_".replace(/_(.*?)_/, function(a, b)
return '<div>' + b + '</div>';
)
哦,或者你也可以:
"hello _there_".replace(/_(.*?)_/, "<div>$1</div>")
由 Liran H 编辑:
对于包括我在内的其他六个人,$1
不起作用,而 \1
起作用。
【讨论】:
javascript 是否使用$1
而不是\1
?有人会提供文档链接吗?
replacementValue
可以是一个函数,并且根据捕获组传递不同的参数?太棒了!
我发现 \1 有效,但 $1 无效,尽管我使用的是 RegExp 变体:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
@CalculatorFeline 说“正则表达式本身”并不能确定是哪一个,因为有人可能正在尝试使用正则表达式进行替换。一定有很多人在尝试这样做:"hello _there_".replace(/_(.*?)_/, /<div>\1<\/div>/)
.
函数替换文档developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…【参考方案2】:
您可以使用replace
代替gsub
。
"hello _there_".replace(/_(.*?)_/g, "<div>\$1</div>")
【讨论】:
你可以去掉反斜杠。【参考方案3】:用于$
指定的替换字符串和替换模式。
这是一份简历:
文档链接:here
"hello _there_".replace(/_(.*?)_/g, "<div>$1</div>")
注意:
如果您想在替换字符串中包含$
,请使用$$
。与 vscode sn-p 系统相同。
【讨论】:
以上是关于Javascript参考匹配组替换?的主要内容,如果未能解决你的问题,请参考以下文章