Regex in Javascript
Walter
- javascript
0 Andi0 Jörg Peschke0 peterS.
Hallo,
ich versuche mit einer Regex alle gleichen URLs zu filtern und sie mit einer Variable darzustellen:
GALLERY_URLREG = new RegExp(/http://www.google.de/g);
Aber da bringt er mir immer eine Fehlermeldung.
Ich bin nocht totaler Anfänger in Sachen regex.
Danke!
Hi,
http://www.html-world.de/program/js_o_reg.php
Eine kleine Einführung
Gruß
Andi
GALLERY_URLREG = new RegExp(/http://www.google.de/g);
Das "/"-Zeichen ist in RegExps vordefiniert, deswegen muss es maskiert werden, wenn es in einem String vorkommt:
GALLERY_URLREG = new RegExp(/http://www.google.de/g);
sollte tun.
Gruesse,
Joerg
gruss Walter,
ich versuche mit einer Regex alle gleichen URLs zu filtern und sie mit einer
Variable darzustellen:GALLERY_URLREG = new RegExp(/http://www.google.de/g);
Aber da bringt er mir immer eine Fehlermeldung.
grundsaetzlich gibt es zwei moeglichkeiten, regulaere ausdruecke
zu erzeugen, zum einem ueber das objektliteral und zum anderen
ueber den konstruktor.
die literalschreibweise verwendet slashes "/" als begrenzer fuer
den regulaeren ausdruck, optional gefolgt von flag-variationen,
wobei "i" fuer "ignore case" (ignoriere gross/kleinschreibung),
"g" fuer "global search" (suche ueber den gesamten operanden),
und "m" fuer "multiline" (jede neue zeile wird als separater string
angesehen) stehen.
damit eignet sich diese form nicht zum erzeugen von regulaeren
ausdruecken zur laufzeit, der "RegExp"-konstruktor eignet sich
dafuer aber umso mehr.
diese funktion erwartet das suchmuster als ersten und die flags
als optionalen zweiten parameter, wobei sowohl suchmuster als
auch flags als string-parameter uebergeben werden muessen.
beim erzeugen des suchmusters sollte aber immer beruecksichtigt
werden, dass alle fuer regulaere ausdruecke reservierten sonder-
zeichen einer zusaetzlichen maskierung durch "" beduerfen.
reservierte zeichen sind: ^$.*+?=!:|/()[]{}
diese zwei regulaeren ausdruecke sind identisch:
var regX01 = /\s+/g; // als objektliteral;
var regX02 = new RegExp("\s+","g"); // ueber konstruktor;
alert(regX01); // /\s+/g;
alert(regX02); // /\s+/g;
alert(regX01.toString() == regX02.toString()); // true;
die verwendung der String-methode "toRegExpString" stellt beim
dynamischen erzeugen von regulaeren ausdruecken sicher, dass
alle im suchmuster vorkommenden sonderzeichen "RegExp"-konform
maskiert werden - methoden-prototyp und beispiel folgen:
String.prototype.toRegExpString = function() { // nicht fuer netscape 4;
return this.replace(/([^$.\*+?=!:|\/()[]{}])/g,"\$1");
};
var searchStr = "nimm dies: kein satz! / (eher eine wortgruppe)?";
var patternArr = ["nimm dies:","kein Satz! /","eine Wortgruppe)?"];
var i, str, regX;
for (i=0; i<patternArr.length; ++i) {
str = patternArr[i];
regX = new RegExp(str.toRegExpString(),"i");
alert("str : " + str + "\n\nregX : " + regX + "\n\ntest result : " + regX.test(searchStr));
}
by(t)e by(t)e - peterS. - pseliger@gmx.net