Mathias Brodala: regex funktioniert in php aber in js nicht

Beitrag lesen

Hallo kyuu.

habe folgenden regex zum prüfen einer url:

"http://[a-zA-Z0-9-.]+.[a-zA-Z]{2,4}(/\S*)?$"

in php eingebunden funktioniert er prima, aber bei der vorab prüfung per javascript leider nicht. und zwar wird das {2,4} und das \S ignoriert bzw fehlinterpretiert.

Du solltest einmal einen Blick in deine Fehlerkonsole werfen. Dein tatsächlicher regulärer Ausdruck lautet in JavaScript wie folgt:

/http:/

Alles was danach kommt, sind ungültige Modifier. Du musst, mangels alternativer Delimiter, in JS die Slashes also maskieren:

/http:\/\/[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}(\/\S*)?$/
    ^              ^^                  ^
    1              23                  4

1 = Wie MudGuard schon sagte, muss der Doppelpunkt nicht maskiert werden
2 = Innerhalb von Zeichenklassen steht der Punkt wirklich für einen Punkt.
3 = Befindet sich das „-“ am Ende einer Zeichenklasse, muss es nicht maskiert werden
4 = Ebenfalls maskiert

Einen schönen Sonntag noch.

Gruß, Mathias

--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
debian/rules