jQuery selector expressions régulières

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

j'ai cherché moi-même, mais ont été incapables de trouver des informations sur la syntaxe et la façon de l'utiliser. Personne ne sait où la documentation pour la syntaxe est?

EDIT: les filtres d'attribut vous permettent de sélectionner en fonction des motifs d'une valeur d'attribut.

515
demandé sur John Slegers 2008-10-10 09:40:48

10 réponses

James Padolsey a créé un wonderful filter qui permet à regex d'être utilisé pour la sélection.

dites que vous avez le suivant div :

<div class="asdf">

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

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

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

307
répondu Xenph Yan 2009-05-07 08:52:34

vous pouvez utiliser la fonction filter pour appliquer une correspondance regex plus compliquée. Voici un exemple qui correspondrait 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!");
668
répondu nickf 2016-06-29 11:56:50

ceux-ci peuvent être utiles.

si vous trouvez par contient alors il sera comme ceci

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

si vous trouvez par commence par alors il sera comme ceci

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

si vous trouvez par se termine par alors il sera comme ceci

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

si vous souhaitez sélectionner des éléments qui id n'est pas un chaîne de caractères

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

si vous souhaitez sélectionner des éléments qui id contient un mot donné, délimité par les espaces

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

si vous voulez sélectionner des éléments dont id est égal à une chaîne donnée ou commençant par cette chaîne suivie d'un trait d'Union

     $("input[id|='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });
217
répondu dnxit 2014-07-14 15:59:04

si votre utilisation de l'expression régulière est limitée à tester si un attribut commence avec une certaine chaîne, vous pouvez utiliser le sélecteur ^ jQuery

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

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

40
répondu Nicolas Janel 2014-02-20 10:05:01
var test = $('#id').attr('value').match(/[^a-z0-9 ]+/);

voilà!

20
répondu Kamil Dąbrowski 2012-03-29 14:22:44

ids et classes sont toujours des attributs, vous pouvez donc leur 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

6
répondu Jānis Elmeris 2011-12-04 06:48:39

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

Puis,

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

sélectionnera tous les éléments de portée avec les correspondances de texte /Sent/.

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

sélectionnera tous les éléments de portée avec leurs classes match /tooltip.an./

6
répondu brook hong 2015-08-21 04:55:04
$("input[name='option[colour]'] :checked ")
1
répondu irfan akhtar 2010-05-14 16:54:12

si vous voulez simplement sélectionner des éléments qui contiennent une chaîne donnée, vous pouvez utiliser le sélecteur suivant:

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

0
répondu Prakash GPz 2015-11-21 08:15:05

je donne juste mon exemple en temps réel:

en javascript natif j'ai utilisé la suite de snippet pour trouver les éléments avec ids commence par"select2-qownerName_select-result".

document.querySelectorAll("[id^='select2-qownerName_select-result']");

lorsque nous sommes passés de javascript à jQuery, nous avons remplacé l'extrait ci-dessus par ce qui suit, ce qui implique moins de changements de code sans perturber la logique.

$("[id^='select2-qownerName_select-result']")

0
répondu Vishnu Prasanth G 2018-02-18 04:27:27