Brauche Hilfe bei einem Regular Expression
mrknister
- perl
Hallo,
mir fällt das zusammensetzen von regulären Ausdrücken noch etwas schwer, daher hoffe ich hier auf eure Hilfe:
Ich muss einen String überprüfen, ob ein String frei von jeglichen Ziffern ist.
Bei "Hallo" muss die Bedingung erfüllt sein, bei "Hal333lo" nicht. Es sind aber auch Ketten wie "Dies ist ein Test" möglich. Was also außer Ziffern drin steht, kann ich nicht vorhersehen.
Klingt ziemlich banal, aber irgendwie ist es das nicht. Kann mir jemand von euch helfen?
Danke
mrknister
Ich muss einen String überprüfen, ob ein String frei von jeglichen Ziffern ist.
D.h. du musst auf mindestens eine Ziffer prüfen. Was hast du bisher probiert?
Struppi.
Ich muss einen String überprüfen, ob ein String frei von jeglichen Ziffern ist.
$string =~ /^\D*$/;
Die Variable muss von Anfang bis Ende mit Non-Digits (also alles ausser [0-9] inklusive dem leeren String) bestehen.
Bei "Hallo" muss die Bedingung erfüllt sein, bei "Hal333lo" nicht.
Was leider keine günstige Ausnahmebeschreibung ist
Es sind aber auch Ketten wie "Dies ist ein Test" möglich. Was also außer Ziffern drin steht, kann ich nicht vorhersehen.
Was ist deine Frage?
ist $string keine ZAHL (gemäss der Definition von Perl), dann ist die Eingabe valide.
Beschäftige dich damit, was für Perl alles eine Zahl ist.
Wenn man REs anwendet, geht man besser davon aus, das, was man will, gutzuheissen, statt das, was man nicht will, zu verwerfen.
Am besten formulierst du deine Aufgabe nochmals mit mehr Daten und einer besseren Beschreibung deiner Aufgabe.
mfg Beat
Alternative zu Beats Vorschlag:
$foo !~ /\d/
Ist wohl einfacher zu merken, die Negierung in den Operator zu verschieben.