2010-11-11 50 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

相关问题