variable auf zahlen mit reg ausdrücken überprüfen
Jörk
- perl
0 Markus Pitha0 Tom
0 Christian Kruse
Hallo,
if($var !~ /[1]?$/) {}
^
1,3,8,10 sind also optional, dH es wird auch WAHR zurückgeliefert, wenn 1,3,8,10 nicht enthalten sind. ich weiß zwar nicht genau, was du erreichen willst, aber ich würde sagen, du solltest das ? durch ein + ersetzen. Andernfalls wird nur WAHR zurückgeliefert, wenn $var aus einem Zeichen besteht.
Markus.
138(10) ↩︎
Hello,
if($var !~ /[1]?$/) {}
^
1,3,8,10 sind also optional, dH es wird auch WAHR zurückgeliefert, wenn 1,3,8,10 nicht enthalten sind. ich weiß zwar nicht genau, was du erreichen willst, aber ich würde sagen, du solltest das ? durch ein + ersetzen. Andernfalls wird nur WAHR zurückgeliefert, wenn $var aus einem Zeichen besteht.
Wenn es nicht nur zum Erlernen von Regular Expressions gedacht ist, behaupte ich, dass die hier fehl am Platz sind.
Wenn in der Variablen nur die Werte 1, 3, 8 oder 10 drinstehen dürfen (das wäre die eine Deutung des ungwöhnlichen Sprachgebrauchs des OP), dann kann man das bestens mit switch/case abfragen. Es gibt ja nur vier erlaubte Fälle.
Wenn natürlich gemeint war, dass die Variable nur aus den Ziffern 1, 3, 8 oder der Zahl 10 bestehen darf (denn 10 ist ja keine Ziffer), dann wäre das mit den RegExp wohl einer Lösung mit String-Set gleichzusetzen in der Last.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
138(10) ↩︎
Hallo Jörk,
die variable darf nur aus den zahlen 1 3 8 und 10 bestehen.
if($var =~ /[1]|10$/) {
print "Good boy!\n";
}
if($var !~ /[2]?$/) {}
was mache ich flasch??
Du hast den Begriff »Zeichenklasse« nicht verstanden. Eine Zeichenklasse
bezeichnet einzelne Zeichen, nicht jedoch Zeichen-Ketten. [138(10)] bezeichnet
also die Zeichen 1, 2, 8, (, 1, 0 und ).
Grüße,
CK