Javascript替换参考匹配组?

Sin*_*our 211 javascript regex

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

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

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

或者能够引用匹配的组,再次以红宝石的方式完成:

"hello _there_".gsub(/_(.*?)_/, "<div>\\1</div>")
Run Code Online (Sandbox Code Playgroud)

任何想法或建议?

air*_*tyh 350

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

哦,或者你也可以:

"hello _there_".replace(/_(.*?)_/, "<div>$1</div>")
Run Code Online (Sandbox Code Playgroud)

  • Javascript使用`$ 1`而不是`\ 1`?有人会提供文档链接吗? (7认同)
  • 关于函数替换的文档 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter (5认同)
  • `replacementValue`可以是一个函数,它根据catch组传递不同的参数?惊人! (3认同)
  • 虽然我使用的是RegExp变体,但我发现\ 1工作但1美元没有:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references (3认同)
  • @CalculatorFeline 说“正则表达式本身”并不能确定是哪一个,因为有人可能试图使用正则表达式进行替换。肯定有很多人试图这样做:`"hello _there_".replace(/_(.*?)_/, /&lt;div&gt;\1&lt;\/div&gt;/)`。 (2认同)

Eif*_*ion 32

你可以用replace而不是gsub.

"hello _there_".replace(/_(.*?)_/g, "<div>\$1</div>")
Run Code Online (Sandbox Code Playgroud)

  • 您可以删除反斜杠. (18认同)

Moh*_*lal 15

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

在此处输入图片说明

链接到文档:这里

"hello _there_".replace(/_(.*?)_/g, "<div>$1</div>")
Run Code Online (Sandbox Code Playgroud)



笔记:

如果您想$在替换字符串中使用$$. 与 vscode 片段系统相同。