2010-03-15 63 views
2

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

>>> 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)似乎只取一个原始字符串进行替换。

回答

2

在新字符串中,您可以通过标记$1,$2等引用捕获组。许多高级参考站点(如w3schools)无法记录该信息。它当然在the spec,或者更易于讨论on MDC

所以,把你的例子:

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

(当然,“S”,在“苹果”会不会在标签内...)我用“i”标志有假设你要处理“香蕉”和“苹果”以及“香蕉”和“苹果”。

+0

感谢 - 我是从W3Schools的文档 – hoju 2010-03-15 11:42:45

+0

@Richard工作:很高兴提供帮助。有趣的是,当我碰到#replace的这个特性时,我感到很惊讶...因为我也一直在w3schools页面上工作。 :-)这些页面非常有用,但真的非常不完整,所以我现在从规范和MDC开始工作了很多。 – 2010-03-15 12:52:36

+0

Mozilla JavaScript文档如此详细! - 我必须养成先在那里检查的习惯。 – hoju 2010-03-16 00:35:45

2

您可以使用String.replace(),这和使用$n从正则表达式中引用捕获组:

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