molily: Regulärer Ausdruck nach Klammern suchen

Beitrag lesen

Hallo,

if( "bla(bla".match( /(/ ) ){ alert('OK' );}
Ausgabe: OK

if(  "bla(bla".match( '(' )  ){ alert('OK' );}
Ausgebe: FEHLER

match(str) läuft auf new RegExp hinaus.
Ja,
   new RegExp("(")
ergibt einen Fehler bei der Kompilierung des regulären Ausdrucks (SyntaxError: unterminated parenthetical), man muss
   new RegExp("\(")
schreiben.
Das liegt daran, dass der String-Literal
   "("
den String
   "("
ergibt, also ein String der Länge 1!). Denn ( ist keine gültige Escape-Sequenz, daher wird das \ einfach ignoriert. Hingegen
   "\("
ergibt den String
   "("
(also ein String der Länge zwei), und der wird schließlich an new RegExp übergeben.
Innerhalb von Zeichenklassen kann man sich die Maskierung wie gesagt sparen:
   new RegExp("[(]")

Mathias