RegExp..... fehler?
Johannes
- javascript
0 Bio0 Thomas Mell0 Bio
Aloa,
Ich hab hier eine RegExp zum suchen von zahlen
var reg = /^.+(.*(\s)(\d+)/;
"Dokumentation (max 700 Tage" >>gibt 700 zurück
"Test(7 Tage)" >>gibt fehler da (\s) und kein Leerzeichen da ist
wenn ich dagegen ein * hinter \s setze also:
var reg = /^.+(.*(\s*)(\d+)/; dann:
"Dokumentation (max 700 Tage" >>gibt 0
"Test(7 Tage)" >>gibt 7 zurück
häää? da das * für 0 oder x(mehrere) steht!
THX
Johannes
Sup!
wenn ich dagegen ein * hinter \s setze also:
var reg = /^.+(.*(\s*)(\d+)/; dann:"Dokumentation (max 700 Tage" >>gibt 0
"Test(7 Tage)" >>gibt 7 zurück
Okay...
Step by Step...
/^ -> sucht Anfang...
.+ -> 1 oder mehr beliebige Zeichen -> D
-> T
( -> Klammer -> Dokumentation (
-> Test(
Tja... und dann kommts.
Du suchst mit .*(\s*)(\d+) beliebig viele beliebige Zeichen (und danach beliebig viele Whitespaces, was nicht viel Sinn macht, weil es in "beliebige Zeichen" mit drin ist) und eine Zahl.
Nun sind RegExp "Greedy" - darum verbraucht er bei "max 700"
alles bis zur letzten 0 als "beliebig viele beliebige Zeichen".
Bei (7 Tage) gibt's nur die eine Zahl, darum kriegst Du sie auch. Bei 07 oder 87 wuerdest Du auch 7 bekommen.
Dein Problem koennte geloest werden, denn es gibt mit dem ? Operator eine Moeglichkeit, die RegExp "non-greedy" zu machen.
Einziges Problem hier: Geht nicht im IE, denn der ist zu bloed.
Gruesse,
Bio
Hi Bio,
Einziges Problem hier: Geht nicht im IE, denn der ist zu bloed.
Stimmt nicht:
var x = "123123";
x.match(/(.*2)(.*)/);
alert(RegExp.$1 + " - " + RegExp.$2);
Gibt '12312 - 3' aus (gierig)
x.match(/(.*?2)(.*)/);
Gibt '12 - 3123' aus (nicht gierig)
Also richtig (getestet im IE6).
Grüße
Thomas Mell
Sup!
Also richtig (getestet im IE6).
Sag' mir Dein Windows, Patch-Level und Build-Nr. von OS und IE, und ich notiere mir, dass ein Versuch unter Win (version) patch-level X, build Y, mit IE version x, patch-level y, build-Nr. z am 2.12.2003 vorbehaltich der Glaubwuedigkeit eines gewissen Herrn Mell bzgl. der RegExp-Unterstuetzung dieser Konfiguration fuer JavaScript erfolgreich gewesen sein soll, fuer die Akten.
War das uebrigens reproduzierbar?
*fg*
Aber Scherz beiseite, im IE 5.5 geht's AFAIK nicht.
Gruesse,
Bio