Expressions régulières du sélecteur jQuery

Je suis après la documentation sur l'utilisation de caractères génériques ou des expressions régulières (pas sûr sur la terminologie exacte) avec un sélecteur jQuery.

J'ai cherché cela moi-même, mais j'ai été incapable de trouver des informations sur la syntaxe et comment l'utiliser. Est-ce que quelqu'un sait où est la documentation de la syntaxe?

EDIT: Les filtres d'attributs vous permettent de sélectionner en fonction des modèles d'une valeur d'attribut.

James Padolsey a créé un merveilleux filtre qui permet à Regex d'être utilisé pour la sélection.

Dites que vous avez la div suivante:

 <div class="asdf"> 

Padolsey :regex filtre :regex peut le sélectionner comme suit:

 $("div:regex(class, .*sd.*)") 

Vérifiez également la documentation officielle sur les sélecteurs .

Vous pouvez utiliser la fonction de filter pour appliquer une correspondance regex plus compliquée. Voici un exemple qui correspond simplement aux trois premières divs (live demo ici ):

 <div id="abcd"></div> <div id="abccd"></div> <div id="abcccd"></div> <div id="abd"></div> 
 $('div') .filter(function() { return this.id.match(/abc+d/); }) .html("Matched!"); 

Ceux-ci peuvent être utiles.

Si vous trouvez par Contient, ce sera ainsi

  $("input[id*='DiscountType']").each(function (i, el) { //It'll be an array of elements }); 

Si vous trouvez par Starts With, alors ce sera comme ça

  $("input[id^='DiscountType']").each(function (i, el) { //It'll be an array of elements }); 

Si vous trouvez par Terminer avec alors, ce sera comme ça

  $("input[id$='DiscountType']").each(function (i, el) { //It'll be an array of elements }); 

Si vous souhaitez sélectionner des éléments dont l' ID n'est pas une chaîne donnée

  $("input[id!='DiscountType']").each(function (i, el) { //It'll be an array of elements }); 

Si vous souhaitez sélectionner des éléments dont l' identifiant contient un mot donné, délimité par des espaces

  $("input[id~='DiscountType']").each(function (i, el) { //It'll be an array of elements }); 

Si vous souhaitez sélectionner des éléments dont l' id est égal à une chaîne donnée ou qui commence par cette chaîne suivie d'un trait d'union

  $("input[id|='DiscountType']").each(function (i, el) { //It'll be an array of elements }); 

Si votre utilisation de l'expression régulière est limitée au test si un attribut commence par une certaine chaîne, vous pouvez utiliser le sélecteur ^ jquery

Par exemple, si vous souhaitez sélectionner uniquement div avec id commençant par "abc", vous pouvez utiliser $("div[id^='abc']")

Beaucoup de sélecteurs très utiles pour éviter l'utilisation de regex peuvent être trouvés ici: http://api.jquery.com/category/selectors/attribute-selectors/

 var test = $('#id').attr('value').match(/[^a-z0-9 ]+/); 

Voici!

Ajoutez une fonction jQuery,

 (function($){ $.fn.regex = function(pattern, fn, fn_a){ var fn = fn || $.fn.text; return this.filter(function() { return pattern.test(fn.apply($(this), fn_a)); }); }; })(jQuery); 

Alors,

 $('span').regex(/Sent/) 

Sélectionnera tous les éléments de portée avec des correspondances de texte / Envoyé /.

 $('span').regex(/tooltip.year/, $.fn.attr, ['class']) 

Sélectionnera tous les éléments de portée avec leurs classes /tooltip.year/.

Les ID et les classes sont toujours des attributs, vous pouvez donc appliquer un filtre d'attribut regexp si vous sélectionnez en conséquence. Lire la suite ici: http://rosshawkins.net/archive/2011/10/14/jquery-wildcard-selectors-some-simple-examples.aspx

 $("input[name='option[colour]'] :checked ") 

Si vous souhaitez simplement sélectionner des éléments contenant une chaîne donnée, vous pouvez utiliser le sélecteur suivant:

$(':contains("search string")')