我想提取具有与以下正则表达式匹配的ID的div#34; gridxpxx",x是一个整数,grid5p42就是一个例子。但是我收到了一个错误。这是我的jquery代码。
$("div:regex(id, ^([1-9])p[1-9][1-9])$")
答案 0 :(得分:0)
// Improved from
// http://james.padolsey.com/javascript/regex-selector-for-jquery/
jQuery.expr[':'].regex = function(elem, index, match) {
var matchParams = match[3].split(','),
validLabels = /^(data|css):/,
attr = {
method: matchParams[0].match(validLabels) ?
matchParams[0].split(':')[0] : 'attr',
property: jQuery.trim(matchParams.shift().replace(validLabels,''))
},
regex = new RegExp(matchParams.join('').replace(/^\s+|\s+$/g,''), 'ig');
return regex.test(jQuery(elem)[attr.method](attr.property));
};
// DEMO
// P.S: Non-literal RegExp Tokens like \d (digits) need to be double-escaped like \\d
$("div:regex(id, ^grid\\d+p\\d+$)").css({color:"red"});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="grid4p8">grid4p8</div>
<div id="grid12p24">grid12p24</div>
<div id="gridfoobar">gridfoobar</div>
<div id="grid12p24foo">grid12p24foo</div>
<div id="grid4p32">grid4p32</div>
<div id="grid8p24">grid8p24</div>
&#13;
注意代码已得到改进,因为in the extension's DOCS语法高亮显示(或直接来自服务器...)吃掉了大部分脚本的反斜杠...还添加了$.trim
允许在attribute
的逗号之前留出空格。