2010-11-11 53 views
3

我需要選擇具有特定格式URL的鏈接。 我可以使用sizzle來評估正則表達式的鏈接的href屬性嗎?嘶嘶聲選擇器可以評估正則表達式嗎?

例如,我可以做這樣的事情:

var arrayOfLinks = Sizzle('a[HREF=[0-9]+$]'); 

創建其URL的數字結尾的頁面上的所有鏈接的數組?

+2

我試過,但沒有足夠的時間來找出API(看起來不怎麼記錄)。我不認爲它支持本地,但你可以寫一個插件,就像jQuery - http://james.padolsey.com/javascript/regex-selector-for-jquery/ – Kobi 2010-11-11 19:42:54

+0

@Kobi。感謝您花時間看看這個。不幸的是,在這種情況下,我不太可能添加jQuery和插件。 – KatieK 2010-11-11 20:02:03

回答

3

試試看。我試圖將Kobi鏈接到的jQuery正則表達式選擇器轉換爲Sizzle選擇器擴展。似乎工作,但我沒有通過大量的測試。

Sizzle.selectors.filters.regex = function(elem, i, match){ 
    var matchParams = match[3].split(',', 2); 
    var attr = matchParams[0]; 
    var pattern = matchParams[1]; 
    var regex = new RegExp(pattern.replace(/^\s+|\s+$/g,''), 'ig'); 
    return regex.test(elem.getAttribute(attr)); 
}; 

在這種情況下,您的例子可以寫成:

var arrayOfLinks = Sizzle('a:regex(href,[0-9]+$)'); 
+1

你應該使用'match [3] .split(',',2)'。 – Gumbo 2010-11-11 21:18:08

+1

@Gumbo,謝謝。在通過jQuery選擇器移植時忽略了這一點。 – stevelove 2010-11-11 21:22:00

+0

這對我有用!非常感謝。 – KatieK 2010-11-15 23:53:26

相關問題