Johannes: RegExp..... fehler?

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

  1. 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/
    1. 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

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

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