peterS.: Regex in Javascript

Beitrag lesen

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

--
ie:( fl:) br:> va:| ls:& rl:| n4:} ss:} de:µ js:} zu:]