我需要一只手将变量转换为正则表达式
这条线很好用:
subject = subject.replace(/<a title="Smile"><img.+?<\/a>/g, emoticons[1]);
我需要为变量切换“Smile”一词。
我尝试了一些不同的配置,例如:
subject = subject.replace(/<a title="'+emoLanguage[0]+'"><img.+?<\/a>/g, emoticons[1]);
但是我无法让变量起作用。
什么是诀窍??
答案 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]);