jQuery selector wyrażenia regularne

Szukam dokumentacji na temat używania symboli wieloznacznych lub wyrażeń regularnych (nie jestem pewien dokładnej terminologii) z selektorem jQuery.

Sam tego szukałem, ale nie byłem w stanie znaleźć informacji na temat składni i jak jej używać. Czy ktoś wie gdzie jest dokumentacja składni?

EDIT: filtry atrybutów umożliwiają wybór na podstawie wzorców wartości atrybutu.

Author: John Slegers, 2008-10-10

10 answers

James Padolsey stworzyłwspaniały filtr , który pozwala na użycie regex do wyboru.

Powiedz, że masz następujące div:

<div class="asdf">

Filtr Padolseya :regex może wybrać TAK:

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

Sprawdź również oficjalną dokumentację na selektorach .

 307
Author: Xenph Yan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-07 08:52:34

Możesz użyć filter Funkcja do zastosowania bardziej skomplikowanego dopasowania regex. Oto przykład, który pasuje do trzech pierwszych divów (live demo tutaj):

<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
Author: nickf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-29 11:56:50

To może być pomocne.

Jeśli znajdziesz przez zawiera to będzie tak

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

Jeśli znajdujesz przez zaczyna się od to będzie tak

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

Jeśli znajdujesz przez kończy się na to będzie tak

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

Jeśli chcesz wybrać elementy, których id nie jest podanym łańcuchem

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

Jeśli chcesz wybrać elementy, które id zawiera dane słowo, rozdzielone spacjami

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

Jeśli chcesz wybrać elementy, które id jest równe podanemu łańcuchowi lub rozpoczynają się od tego łańcucha, po którym następuje myślnik

     $("input[id|='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });
 217
Author: dnxit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-14 15:59:04

Jeśli użycie wyrażenia regularnego jest ograniczone do sprawdzenia, czy atrybut zaczyna się od określonego ciągu znaków, możesz użyć selektora ^ jquery

Na przykład, jeśli chcesz wybrać tylko div z id zaczynającym się od "abc", możesz użyć $("div[id^='abc']")

Wiele bardzo przydatnych selektorów, aby uniknąć użycia regex można znaleźć tutaj: http://api.jquery.com/category/selectors/attribute-selectors/

 40
Author: Nicolas Janel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-20 10:05:01
var test = $('#id').attr('value').match(/[^a-z0-9 ]+/);
Proszę bardzo!
 20
Author: Kamil Dąbrowski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-29 14:22:44

Identyfikatory i klasy są nadal atrybutami, więc możesz zastosować do nich filtr atrybutów wyrażeń regularnych, jeśli odpowiednio wybierzesz. Czytaj więcej tutaj: http://rosshawkins.net/archive/2011/10/14/jquery-wildcard-selectors-some-simple-examples.aspx

 6
Author: Jānis Elmeris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-04 06:48:39

Dodaj funkcję 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);

Wtedy,

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

Wybierze wszystkie elementy span z dopasowaniem tekstu / wysłane/.

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

Wybierze wszystkie elementy span z ich klasami match /tooltip.rok/.

 6
Author: brook hong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-21 04:55:04
$("input[name='option[colour]'] :checked ")
 1
Author: irfan akhtar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-14 16:54:12

Jeśli chcesz tylko wybrać elementy, które zawierają dany ciąg znaków, możesz użyć następującego selektora:

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

 0
Author: Prakash GPz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-21 08:15:05

Podaję tylko mój przykład czasu rzeczywistego:

W natywnym javascript użyłem poniższego fragmentu, aby znaleźć elementy z ids zaczynające się od "select2-qownerName_select-result".

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

Po przejściu z javascript na jQuery zastąpiliśmy powyższy fragment poniższym, co wiąże się z mniejszą ilością zmian w kodzie bez zakłócania logiki.

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

 0
Author: Vishnu Prasanth G,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-18 04:27:27