【问题标题】:how to add markup to text using JavaScript regex如何使用 JavaScript 正则表达式向文本添加标记
【发布时间】:2011-01-27 14:41:33
【问题描述】:

我需要使用 JavaScript 正则表达式为一些文本添加标记。在 Python 中,我可以这样做:

>>> import re
>>> re.sub('(banana|apple)', r'<b>\1</b>', 'I have 1 banana and 2 apples!')
'I have 1 <b>banana</b> and 2 <b>apple</b>s!'

JavaScript 中的等价物是什么? string.replace(regex, newstring) 似乎只需要一个原始字符串来替换。

【问题讨论】:

    标签: javascript python regex


    【解决方案1】:

    您可以为此使用String.replace() 并使用$n 从正则表达式中引用捕获的组:

    var in = 'I have 1 banana and 2 apples!';
    var out = in.replace(/(banana|apple)/g, "<b>$1</b>");
    

    【讨论】:

      【解决方案2】:

      在新字符串中,您可以通过标记 $1$2 等引用捕获组。许多高级参考网站(如 w3schools)未能记录这一点。当然是在the spec 中,或者更易于讨论的on MDC

      以你为例:

      "I have 1 banana and 2 apples!".replace(/(banana|apple)/gi, "<b>$1</b>");
      

      (当然,“apples”中的“s”不会在标签内......)我在那里使用了 'i' 标志,假设您要处理“Banana”和“Apple”以及“香蕉”和“苹果”。

      【讨论】:

      • @Richard:很高兴为您提供帮助。有趣的是,当我遇到#replace 的这个功能时,我感到很惊讶……因为我也一直在 w3schools 页面上工作。 :-) 这些页面很有用,但确实真的不完整,所以我现在更多地使用规范和 MDC。
      • 哇,Mozilla JavaScript 文档如此详细! - 我得养成先去那里检查的习惯。
      猜你喜欢
      • 2019-04-21
      • 2018-08-02
      • 2021-02-07
      • 2019-04-30
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多