Regular Expression (RegExp) aus String in JavaScript (JS)
In PHP hatte ich in der täglichen Arbeit schon oft mit regulären Ausdrücken (auch Regular Expressions oder kurz RegExp genannt) zu tun, in JavaScript habe ich damit bisher nur selten gearbeitet. Für ein aktuelles Projekt musste ich aber aus einem Array von Strings die regulären Ausdrücke erzeugen und hatte einige Zeit damit zu tun, herauszufinden wie das geht.
Reguläre Ausdrücke werden in JavaScript einfach durch die Begrenzer "/" definiert, also z.B. so:
-
// RegExp-Definition
-
myregexp = /regexp/;
-
// Such-String
-
searchstring = "Das mit den regexp macht Spaß";
-
// RegExp anwenden
-
var result = searchstring.search(myregexp);
-
// und Ergebnis ausgeben
-
if(result != -1) document.write("Gefunden");
-
else document.write("Nicht gefunden");
JavaScript erkennt anhand der Delimiter (Begrenzer) "/", dass es sich um einen regulären Ausdruck handelt. Wenn jetzt aber das Suchmuster als Zeichenkette vorliegt, dann funktioniert das nicht. Hier ist es aber auch ganz einfach möglich, ein Objekt vom Typ RegExp zu erzeugen:
-
// JavaScript-RegExp aus Zeichenkette erzeugen
-
myregexp = new RegExp("suchmuster");
-
// Als 2. Parameter können die RegExp-Modifier angegeben werden
-
myregexp2 = new RegExp("suchmuster", "ig");
Nur mal so als Tipp...
Zusatztipp: Die Suchmuster sind normalerweise zu "escapen" (d.h. alle vorkommenden "/" durch die Variante mit vorangestelltem "\" zu ersetzten) also aus "/" wird "\/". Das ist bei der Variante aus dem String nicht notwendig. Sehr praktisch. Die regexp-relevanten Zeichen müssen trotzdem mit Backslashes versehen werden, was natürlich wiederum per RegExp geschehen kann (bei Bedarf einfach eine kleine Funktion basteln):
-
// Punkt escapen durch Backslash voranstellen
-
mstr=mstr.replace(/\./g,"\\.");
Ich wünsche ein allzeit freudiges RexExp-Hacking!
Was hast Du für Erfahrungen mit RegExp gemacht? Bist Du "Fan" oder hasst Du die Teile? Hast Du einen weitergehenden Tipp zum Thema? Schreib mir Deine Meinung in den Kommentaren.
Wenn Du diesen Beitrag hilfreich findest, dann abonnier' doch den PHPKuh RSS-Feed, um auch in Zukunft die Beiträge rund um das Thema Webentwicklung mit PHP zu erhalten.