将Regex传递给JQuery Selector

时间:2015-10-20 13:53:47

标签: jquery regex jquery-selectors

您好我有以下情况。 我有正则表达式,但不能将它传递给jQuery选择器。 我正在努力追随。

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

我的元素有如下ID prefix_10_postfix prefix_1_postfix

请指导我。

1 个答案:

答案 0 :(得分:2)

您可以使用开头和属性值选择器结束

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

这将选择ID以前缀_ 开头并以 _postfix 结尾的所有元素。

如果网页包含许多ID以prefix_开头并以_postfix结尾的元素,但不符合它们之间应该是一个或两个数字的条件,例如。 <div id="prefix_tushar_postfix"></div>,选择器的开头和结尾都不起作用。在这种情况下,filter可以与属性选择器结合使用。

Demo

&#13;
&#13;
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');
&#13;
<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>
&#13;
&#13;
&#13;