Reguläre Ausdrücke dynamisch erstellen?

vop

Erfahrenes Mitglied
Hi Spezies

Ich möchte auf einer Seite dynmisch Tabelleneinträge ausblenden (filtern). Dazu möchte ich dem Benutzer die Möglichkeit geben, mehrere Begriffe einzugeben, bei deren Auffinden Zeilen ausgeblendet werden.

Dazu möchte ich prüfen, ob der Eintrag einer Zeile mit einem eingegeben Begriff "matcht".

Beispiel
Benutzer gibt ein Filter: "enrico"
Zeilen, die enrico als komplettes Wort enthalten (case insensitive) sollen ausgeblendet werden.
Verwende ich:
Code:
     if ( Zeile.search( /\benrico\b/i  ) >=0 )
  	//	...
funktioniert es.

Nun möchte ich aber den regulären Ausdruck dynamisch zusammen setzen (da der Benutzer ja beliebige Begriffe angeben kann).
Verwende ich also nun
Code:
   var ausdruck = '/\\b'+ Filter + '\\b/i';
   if ( Zeile.search( ausdruck ) >=0 )
   // ...
geht es leider nicht (obwohl ich die \ entsprechend schon verdoppelt habe.
Lasse ich mir ausdruck mit alert ausgeben, entspricht der String dem gewünschten Ausdruck. Scheinbar ist der String aber eben kein Ausdruck!?

Wie bekomme ich einen solchen Ausdruck aber nun zusammen gebastelt? Hat jemand eine Idee?
 
OK! Hier die Lösung:

In solchem Fall verwendet man das RegExp-Objekt:

PHP:
      StrAusdruck = '\\b' + Filter + '\\b';
      var ausdruck = new RexExp( StrAusdruck, 'i' );
      // ...
      if ( Zeile.search( ausdruck ) >=0 )
      // ...

so gehts!

Hätte ich ja auch selbst drauf kommen können ;)

vop
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück