Question Expressions régulières du sélecteur jQuery


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

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

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


513
2017-10-10 05:40


origine


Réponses:


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

Supposons que vous avez les éléments suivants div:

<div class="asdf">

Padolsey's :regex le filtre peut le sélectionner comme ceci:

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

Aussi, vérifiez le documentation officielle sur les sélecteurs.


305
2017-10-10 05:41



Vous pouvez utiliser le filter fonction pour appliquer une correspondance plus compliquée de regex. Voici un exemple qui correspondrait juste aux trois premiers divs (démo en direct 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!");

662
2017-10-11 07:06



Ceux-ci peuvent être utiles.

Si vous trouvez par Contient alors ce sera comme ça

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

Si vous trouvez par Commence avec alors ce sera comme ça

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

Si vous trouvez par Se termine par alors ce sera comme ça

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

Si vous voulez sélectionner des éléments qui 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 voulez sélectionner des éléments qui id 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 voulez sélectionner des éléments qui 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
     });

215
2017-07-14 15:59



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

Par exemple si vous voulez seulement sélectionner 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/


40
2017-11-05 11:43



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

Voici!


20
2018-03-29 14:22



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


6
2018-04-28 14:47



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

Alors,

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

sélectionnera tous les éléments span avec des correspondances de texte / Envoyé /.

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

sélectionnera tous les éléments span avec leurs correspondances de classes /tooltip.year/.


6
2017-08-21 04:55



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

1
2017-12-09 11:24



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")')


0
2017-11-21 08:15



Je ne fais que donner mon exemple en temps réel:

En javascript natif, j'ai utilisé l'extrait suivant 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é ci-dessus snippet par ce qui suit, ce qui implique moins de changements de code sans perturber la logique.

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


0
2018-02-18 04:27