Walter: Regex in Javascript

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!

  1. Hi,

    http://www.html-world.de/program/js_o_reg.php

    Eine kleine Einführung

    Gruß
    Andi

  2. 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

  3. 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:]