Javascript正则表达式:替换变量

时间:2011-06-08 15:25:29

标签: javascript regex

我需要一只手将变量转换为正则表达式

这条线很好用:

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

我需要为变量切换“Smile”一词。

我尝试了一些不同的配置,例如:

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

但是我无法让变量起作用。

什么是诀窍??

3 个答案:

答案 0 :(得分: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中的其他东西更容易和更优雅。

答案 1 :(得分:0)

使用new Regexp()构造函数创建正则表达式,而不是文字正则表达式。

请注意,您必须正确转义字符串,因为许多字符在正则表达式中具有特殊含义。

答案 2 :(得分:0)

在这种情况下你必须使用RegExp对象的cobnstructor:

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