2011-06-08 78 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]);