【问题标题】:JavaScript String replace - How do you use matched variables in the replacement string?JavaScript 字符串替换 - 如何在替换字符串中使用匹配的变量?
【发布时间】:2011-10-23 00:53:37
【问题描述】:

如何在替换字符串中使用模式中匹配的变量?

var regexp = new RegExp('needle', 'ig');
str.replace(regexp, '<span class="marked">//1</span>')

【问题讨论】:

  • @Peter Kelly:我不确定这是否有效——他的示例没有引用 parsing HTML,而是处理在字符串周围添加 HTML 标记。这是正则表达式的完全有效用途。
  • 您在哪里看到可以使用//1?仔细阅读有关替换字符串的文档,尤其是有关特殊 $ 变量的部分。

标签: javascript regex replace


【解决方案1】:

试试

var regexp = new RegExp(something, 'ig');
str.replace(regexp, '<span class="marked">$&</span>')

参考资料:

【讨论】:

  • 它有效.. 但为什么 $& ?如果你在模式中有一些组怎么办.. $1 等似乎不起作用
  • 有趣。我实际上不知道 $&amp;$' 和 $` 替换。
  • @claekk: $& 表示匹配的字符串,$n 表示匹配的第n组。如果您不使用组匹配,则应该更可取(不过,$1 也应该可以使用)。请参阅我添加的参考文献
【解决方案2】:

在 JavaScript 中使用反向引用的正确方法是通过$1...$9

为了让你的例子有效:

var regexp = new RegExp(something, 'ig');
var result = str.replace(regexp, '<span class="marked">$1</span>');

更多信息请点击此处:http://www.regular-expressions.info/javascript.html#replace

【讨论】:

  • 要使用数字反向引用,您需要将正则表达式括在括号中:/(needle)/。否则,请使用 Eineki 显示的$&amp;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-13
  • 2014-08-01
相关资源
最近更新 更多