2011-08-05 4 views
16

estoy luchando con el uso del objeto RegExp que me permita crear dinámicamente una expresión, y aplicarlo a un grupo de elementos.RegExp para crear dinámicamente una expresión regular y filtrar el contenido

Here is a jsFiddle, a continuación se muestra el código:

<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'); 
        } 
     }); 

    }) 

Respuesta

31

JavaScript añade automáticamente "/" al final y al principio de la expresión. Eliminarlos de su cuerda, 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

Podría besarte. –

+12

Más exactamente, el '/' denotan un literal de expresiones regulares, pero no forman parte de ella, como '" 'denota una cadena literal, pero no es parte de la cadena. – Phrogz

Cuestiones relacionadas