2016-04-06 9 views
1

次の正規表現 "gridxpxx"に一致するIDを持つdivを抽出したい、xは整数、grid5p42は例です。しかし、私はエラーが発生します。ここにjqueryコードがあります。IDの要素を正規表現で選択する

$("div:regex(id, ^([1-9])p[1-9][1-9])$")

+0

エラーは何ですか? – SamGhatak

+0

アンカー '^'を取り除き、試してみてください – rock321987

+3

あなたの正規表現は文字列が数字で始まることを意味します。それは 'grid'と一致しません。そして整数*は数字を意味します...?なぜ '0-9'(または' \ d')ではなく '1-9'なのでしょうか? – ClasG

答えて

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>

NOTEコードが改善されている原因in the extension's DOCSシンタックスハイライト(サーバーから直接、またはが...)スクリプトのバックスラッシュのほとんどを食べています... attributeのカンマの前にスペースを入れるために$.trimを追加しました。

関連する問題