代码之家  ›  专栏  ›  技术社区  ›  hoju

如何使用javascript regex向文本添加标记

  •  2
  • hoju  · 技术社区  · 16 年前

    我需要使用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中的等价物是什么? replace(regex,newstring)似乎只接受原始字符串进行替换。

    2 回复  |  直到 16 年前
        1
  •  2
  •   T.J. Crowder    16 年前

    在新字符串中,可以通过标记引用捕获组 $1 , $2 很多高级参考站点(比如w3schools)都没有记录下来。它在 the spec ,当然,或者更容易理解的讨论 on MDC .

    以你为例:

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

    (当然,“apple s”中的“s”不在标签内……)我在那里使用了“i”标志,假设您要处理“banana”和“apple”以及“banana”和“apple”。

        2
  •  2
  •   cletus    16 年前

    你可以使用 String.replace() 为了这个和使用 $n 要从正则表达式引用捕获的组,请执行以下操作:

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