2010-11-11 19 views
3

Je dois sélectionner des liens avec un format spécifique d'URL. Puis-je utiliser sizzle pour évaluer l'attribut href d'un lien par rapport à une expression régulière?Un sélecteur de grésillement peut-il évaluer une expression régulière?

Par exemple, je peux faire quelque chose comme ceci:

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

pour créer un tableau de tous les liens sur la page dont l'URL se termine par un numéro?

+2

J'ai essayé, mais n'ont pas assez de temps pour comprendre l'api (ne semble pas très documenté). Je ne pense pas qu'il supporte en natif, mais vous pouvez probablement écrire un plugin, comme sur jQuery - http://james.padolsey.com/javascript/regex-selector-for-jquery/ – Kobi

+0

@Kobi. Merci pour votre temps à jeter un coup d'oeil à cela. Malheureusement, il est peu probable que je puisse ajouter jQuery et un plug-in dans ce scénario. – KatieK

Répondre

3

Faites un essai. J'ai tenté de convertir le sélecteur d'expressions régulières jQuery auquel Kobi est lié en une extension de sélecteur Sizzle. Cela semble fonctionner, mais je ne l'ai pas passé beaucoup de tests.

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)); 
}; 

Dans ce cas, votre exemple serait écrit:

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

Vous devez utiliser 'match [3] .split (',', 2)'. – Gumbo

+1

@Gumbo, merci. Manqué que lors du portage sur le sélecteur jQuery. – stevelove

+0

Cela a fonctionné pour moi! Merci beaucoup. – KatieK