0
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”?我在这种情况下错过了什么吗?javascript正则表达式中的反向引用的比较
同时打印两个引用会打印相同的字符串。
var y = x.replace(/<a href="([^"]+)">([^<]+)<\/a>/igm, '($2)($1)')
这将为后面的引用输出相同的url。
喔确定..所以假设x变量与文本一起多个环节,我们需要与之相匹配的()一次应用正则表达式来让所有的反向引用,然后用计数器,然后使用替换功能.. 这有助于..谢谢格雷格。 – kameswarib 2014-11-05 05:59:25
如果您需要为替换字符串以外的任何目的获取反向引用的值,则需要使用'string.match(regex)'或'regex.exec(string)'来获取伪阵列的结果,其中元素'[0]'是由正则表达式匹配的完整字符串,'[1]'是反向引用#1的匹配(如果有的话,如果不匹配则为空/未定义)。 – GregL 2014-11-05 06:13:01
对于任何具有href属性和内部文本作为相同链接的链接,我们希望以不同的模式显示它。对于所有其他链接,我们将使用不同的模式。因此,使用替换函数。但是,这看起来像是不可能的。如果我们在字符串中有多个链接,我们将无法检查每个链接的href属性和链接文本的相等性,并用正确的格式进行替换。 – kameswarib 2014-11-05 06:26:09