2011-06-08 74 views
2

我需要一隻手再轉一個變量爲正則表達式的Javascript正則表達式:替代變量

該行正常工作:

subject = subject.replace(/<a title="Smile"><img.+?<\/a>/g, emoticons[1]); 

我需要切換單詞「微笑」的變量。

我試圖像幾個不同的配置:

subject = subject.replace(/<a title="'+emoLanguage[0]+'"><img.+?<\/a>/g, emoticons[1]); 

,但我不能讓變量工作。

什麼竅門?

+0

你能提供您要修改一個真正的HTML樣本? – sergio 2011-06-08 15:31:15

回答

1

首先我會說,你可能不應該使用正則表達式來解析/修復HTML。這就是說,這應該工作:

var re = new RegExp("<a title=\"" + emoLanguage[0] + "\"><img.+?</a>", "g"); 
subject = subject.replace(re, emoticons[1]); 

更好的解決方案是使用jQuery。解決方案更漂亮:

jQuery("a[title='" + emoLanguage[0] + "']").replaceWith(emoticons[1]); 

這假定emoticons[1]中的數據是HTML。

當然,只爲這個小東西導入jQuery可能是矯枉過正,但我​​相信你會發現它可能會讓你的Javascript中的其他東西變得更加簡單和優雅。

0

使用new Regexp()構造函數來創建正則表達式,而不是文字正則表達式。

請注意,您必須正確地轉義您的字符串,因爲許多字符在正則表達式中有特殊含義。

0

你必須使用在這種情況下,RegExp對象cobnstructor:

var pattern = new RegExp('<a title="'+emoLanguage[0]+'"><img.+?</a>',"g"); 
subject = subject.replace(pattern, emoticons[1]);