2010-03-15 64 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>");