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