Bio: RegExp..... fehler?

Beitrag lesen

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

--
Besucht den Adventskalender!
http://selfcommunity.teamone.de/advent/2003/