Mathias Brodala: regex funktioniert in php aber in js nicht

Beitrag lesen

Hallo Felix.

"http://[a-zA-Z0-9-.]+.[a-zA-Z]{2,4}(/\S*)?$"
[...] Dein tatsächlicher regulärer Ausdruck lautet in JavaScript wie folgt:

/http:/

[...] Du musst, mangels alternativer Delimiter, in JS die Slashes also maskieren:

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

...oder aber den String selbst von Javascript zu einem RegExp-Objekt umwandeln lassen. Dann sind alle nötigen Maskierungen von vornherein enthalten.

Wobei die JS-Engine hierbei erst den String in ein RegExp-Objekt kompilieren muss, was definitiv weniger leistungsschonend ist, als ein RegExp-Literal zu verwenden.

Ich probier's mal ungetestet:

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

var modifier = "gi";
var suchmuster = new RegExp(muster, modifier);
var teststring = "http://..Dackelwackel...blah/meineseite.xml";
alert(teststring.match(suchmuster));

  
Copy-und-Paste mit vorangestelltem „javascript:“ in meine Adressleiste bestätigt die Funktionstüchtigkeit.  
  
  
Einen schönen Sonntag noch.  
  
Gruß, Mathias  

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