Javascript正则表达式:替换变量

Javascript regular expressions: substituting variables

本文关键字:变量 替换 正则表达式 Javascript      更新时间:2023-09-26

我需要一只手将变量分解为正则表达式

这条线路运行良好:

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

我需要把"微笑"这个词换成一个变量。

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

subject = subject.replace(/<a title="'+emoLanguage[0]+'"><img.+?<'/a>/g, emoticons[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中的其他东西变得更加简单和优雅。

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

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

在这种情况下,您必须使用RegExp对象coinstructor:

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