Regex zusammenbauen
Marco von Frieling
- javascript
Hallo.
Ich habe eine Webseite (dynamisch) mit zahlreichen Elementen (meist DIV), von denen einige eine ID nach einem festgelegten Muster haben. Dieses Muster sieht wie folgt aus:
A<Objekt-ID aus Datenbank>_<Typkennung>_<fortlaufende Nummer>
Bei Klick auf eine Checkbox muss ich jetzt alle Objekte ansprechen, deren ID diesem Muster genügt. Ich habe mir dazu diese Regex gebastelt:
/A\d+_L_\d+/
Die funktioniert auch, nur dass ich jetzt auch wahlweise Objekte des Typs A ansprechen muss. Der Typ wird meiner Funktion als String übergeben. Wie kann ich den Inhalt dieses Strings nun an die Stelle <Typkennung> in die Regex einbauen?
Gruß Marco
gruss Marco,
... Dieses Muster sieht wie folgt aus:
A<Objekt-ID aus Datenbank>_<Typkennung>_<fortlaufende Nummer>
...
... Ich habe mir dazu diese Regex gebastelt:
/A\d+_L_\d+/
...
... Der Typ wird meiner Funktion als String übergeben. Wie kann
ich den Inhalt dieses Strings nun an die Stelle <Typkennung> in
die Regex einbauen?
"RegExp"-objekte erhaelt man nicht nur ueber die von Dir benutzte
literalschreibweise, man kann diese auch ueber den gleichnamigen
konstruktor erzeugen, wobei unter umstaenden auf die richtige
maskierung einiger sonderzeichen innerhalb der string-argumente
des "RegExp"-konstruktors geachtet werden muss;
var regX01 = /\s+/g;
var regX02 = new RegExp("\s+","g");
//die suchmuster beider objekte sind identisch;
alert(regX01 + "\n" + regX02);
fuer Dein gegebenes bsp. sollte also folgendes konstrukt genuegen:
//gewuenscht wird: /A\d+_L_\d+/, wobei das/die zeichen zwischen
//den beiden unterstrichen frei gewaehlt werden kann/koennen;
var freeType = "L";
var regX01 = /A\d+_L_\d+/;
var regX02 = new RegExp("A\d+_" + freeType + "_\d+","");
//die suchmuster beider objekte sind identisch;
alert(regX01 + "\n" + regX02);
by(t)e by(t)e - peterS. - pseliger@gmx.net
Danke Peter, das funktioniert.
Gruß Marco