Johannes Bauer: ICQ-Nummer erkennen (am besten mit Regexp)

Hallo Leute,

ich würde gerne prüfen, ob ein String eine valide ICQ-Nummer darstellt...
Im Archiv habe ich folgendes gefunden: \d{7,9}. (stellt also die Zeichenlänge dar)...
Wie bekomme ich jetzt die Bedingung, dass nur Zahlen vorhanden sind, rein?

Danke,
Johann

  1. Hallo,

    Im Archiv habe ich folgendes gefunden: \d{7,9}. (stellt also die Zeichenlänge dar)...

    \D ist alles andere als Zahl

    $string = "sfhfjsh";
    if ($string =~ /\D/){print $string."enthält auch was anderes als nur zahlen";}
    else {print $string."enthält nur zahlen";}

    gruss
    andreas

    1. Hallo Andreas,

      Im Archiv habe ich folgendes gefunden: \d{7,9}. (stellt also die Zeichenlänge dar)...

      \D ist alles andere als Zahl

      und wofür könnte dann \d stehen ;-)

      Grüße,

      Peter

  2. Hi,

    ich würde gerne prüfen, ob ein String eine valide ICQ-Nummer darstellt...
    Im Archiv habe ich folgendes gefunden: \d{7,9}. (stellt also die Zeichenlänge dar)...

    Nein. \d steht für Ziffer (digit), {7,9} für mindestens 7, maximal 9 Vorkommen des vorherigen Teilausdrucks,
    Zusammen also mindestens 7 Ziffern und höchstens 9 Ziffern.

    Jetzt könnten nur noch Zeichen davor und danach kommen, also noch die passenden Anker verwenden:

    ^ für den Stringanfang
    $ für das Stringende

    ^\d{7,9}$

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
  3. Hallo Johannes,

    ich würde gerne prüfen, ob ein String eine valide ICQ-Nummer darstellt...

    Entschuldige, was bitte ist eine valide ICQ-Nummer? Es sind doch letztendlich
    nur Zahlen in einem stetig anwachsenden Zahlenbereich. Du hast also nur die
    Möglichkeit, herauszufinden, ob es sich bei dem eingegebenen String um eine
    Zahl handelt - aber ist 102354783457237543474574 auch eine valide ICQ-Nummer?

    (Was mir öfter untergekommen ist, ist auch die Schreibweise #123456789, also
    mit einem führenden '#' als Kennzeichen für eine UIN. Solltest Du eventuell
    in Deinem regulären Ausdruck berücksichtigen.)

    • Tim
    --
    Memes don't exist. Tell your friends.