var x = "SomeText <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。
答案 0 :(得分:1)
JS对$1
或$2
之类的字符串执行任何特殊操作的唯一情况是,它是作为.replace()
的第二个参数传递的结果字符串的一部分。
你'$2' === '$1'
所说的是if the string "$2" is the same as the string "$1"
,这显然总是错误的。
相反,您可以使用.match()
方法将各种反向引用作为可以索引的数组。
尝试以下方法:
var x = "SomeText <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");