2015-10-20 2 views
1

Привет У меня есть следующий сценарий. У меня есть рабочее регулярное выражение, но не могу передать его в селектора jQuery. Я стараюсь нижеследующий.Передать регулярное выражение для JQuery Selector

$("#prefix_[\d]{1, 2}_postfix")

Мои элементы имеют идентификаторы следующим prefix_10_postfix prefix_1_postfix

Просьба направлять меня.

+0

Здесь следует отметить, что в регулярном выражении '[\ d] {1, 2}' может быть использован как '\ D {1,2}', без необходимости класс и пространство – Tushar

ответ

2

Вы можете использовать начинается с и заканчивается с селектором атрибут-значение

$('[id^="prefix_"][id$="_postfix"]') 

Это позволит выбрать все элементы, идентификатор начинается с prefix_ и заканчивается _postfix.


Если страница содержит много элементов, идентификатор начинается с prefix_ и заканчивается _postfix, но не соответствует критериям, которые между ними должны быть один или два номера, бывшие. <div id="prefix_tushar_postfix"></div>, начинается с и заканчивается селектором, не работает. В этом случае filter может использоваться в сочетании с селекторами атрибутов.

Demo

var regex = /^prefix_\d{1,2}_postfix$/; 
 

 
// Narrow down elements by using attribute starts with and ends with selector 
 
$('[id^="prefix_"][id$="_postfix"]').filter(function() { 
 
    
 
    // filter the elements that passes the regex pattern 
 
    return regex.test($(this).attr('id')); 
 
}).css('color', 'green');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<div id="prefix_1_postfix">prefix_1_postfix</div> 
 
<div id="prefix_123_postfix">prefix_123_postfix</div> 
 
<div id="prefix_tushar_postfix">prefix_tushar_postfix</div> 
 
<div id="prefix__postfix">prefix__postfix</div> 
 
<div id="prefix_11_postfix">prefix_11_postfix</div> 
 
<div id="prefix_aa_postfix">prefix_aa_postfix</div>