2011-08-05 3 views
16

RegExpオブジェクトを使用して動的に式を作成し、それを要素のグループに適用することに苦労しています。以下RegExpを使用して正規表現を動的に作成し、コンテンツをフィルタする

Here is a jsFiddleは、コードは次のとおりです。

<div id='selectors'><span>A-F</span><span>G-L</span><span>M-S</span><span>T-Z</span></div> 

<a hreh=#>Astring</a> 
<a hreh=#>Cstring</a> 
<a hreh=#>Xstring</a> 
<a hreh=#>Dstring</a> 
<a hreh=#>Zstring</a> 

$('div#selectors span').click(function(){ 
     expression = "/^["+$(this).html()+"].*$/"; 

     rx = RegExp(expression,'i'); 
     console.log(rx,'expression'); 
     $("a").each(function(){ 

        if($(this).html().match(rx) !== null){ 
         $(this).addClass('selected'); 
        } 
     }); 

    }) 

答えて

31

JavaScriptが自動的に終了し、式の先頭に「/」が追加されます。 Example Here

$('div#selectors span').click(function() { 
    var expression = "^[" + $(this).html() + "].*$"; 
    var rx = new RegExp(expression, 'i'); 

    console.log(rx, 'expression'); 

    $("a").each(function() { 
     if ($(this).html().match(rx) !== null) { 
      $(this).addClass('selected'); 
     } 
    }); 

}); 
+5

は、私はあなたにキスができ、あなたの文字列からそれらを削除します。 –

+12

より正確には、 '/'は正規表現のリテラルを表しますが、 '' 'は文字列リテラルを表しますが、文字列の一部ではありません。 – Phrogz

関連する問題