javascript正则表达式中反向引用的比较

时间:2014-11-05 05:31:26

标签: javascript regex

var x = "SomeText&nbsp;<a href=\"http://g.com\">http://g.com</a>"; 
var y = x.replace(/<a href="([^"]+)">([^<]+)<\/a>/igm, ('$2' == '$1')?"t":"f");

比较返回false。 y现在是“SomeText f”。 我如何比较并获得“SomeText t”?我错过了什么条件吗?

打印后引用打印相同的字符串。

var y = x.replace(/<a href="([^"]+)">([^<]+)<\/a>/igm, '($2)($1)') 

这会为两个反向引用打印相同的URL。

1 个答案:

答案 0 :(得分:1)

JS对$1$2之类的字符串执行任何特殊操作的唯一情况是,它是作为.replace()的第二个参数传递的结果字符串的一部分。

'$2' === '$1'所说的是if the string "$2" is the same as the string "$1",这显然总是错误的。

相反,您可以使用.match()方法将各种反向引用作为可以索引的数组。

尝试以下方法:

var x = "SomeText&nbsp;<a href=\"http://g.com\">http://g.com</a>"; 
var regex = /<a href="([^"]+)">([^<]+)<\/a>/igm;
var matches = x.match(regex);
var y = x.replace(regex, matches[2] == matches[1]?"t":"f");