was macht +$
walker
- perl
hi!
eine fragen zu perl:
ich hab einen filter gebastelt <- ja ich habs aus dem forumsarchive zusammengeklaut, nur kleinbuchstaben/zahlen im name, funktioniert soweit auch.
ich moechte das ganze aber auch verstehn wobei mir unklar is wozu ich
+$ benoetige, es laeuft mit und ohne +$
if($NameB !~ /[1]+$/){error();}
else{
.
if badname -> error
else -> success
.
}
ew<<
a-z0-9\s ↩︎
Hallo
http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichenketten.
gruss
Tag walker.
if($NameB !~ /[1]+$/)
\s = leerzeichen
Nein, innerhalb von Zeichenklassen hat nur das "-" eine besondere Bedeutung, alles andere wird so behandelt, wie es da steht. Das bedeutet, dass du auch den Backslash erlaubst. Das "+" am Ende bedeutet, dass die Zeichen der Zeichenklasse mindestens 1mal und beliebig oft vorkommen müssen, das "^" am Anfang und das "$" am Ende bedeuten, dass die Regel für den gesamten String gelten muss. Dein RegExp könnte also so aussehen:
/[2]+$/
Das fängt dir allerdings auch Zeilen ein, die ausschließlich aus Leerzeichen bestehen. Sollte das nicht gewünscht sein, müsste der RegExp dann so aussehen:
/^([a-z0-9]|\s(?!\s))+$/
Siechfred
hi Siechfred!
danke fuer die ausfuehrliche erklaerung, werd mir das copieren, vielleicht funktioniert meine letzterkenntniss weil die formular_eingabe nur
"eine zeile mit max 20 buchstaben"
is.
hab aber dein beispiel eingefuegt, klappt wunderbar, kann nur mehr buchstaben und zahlen eintragen ohne leer oder sonderzeichen, so sollts sein :)
auf deutsch wuerde der befehl wohl heissen
wenn NameB nicht aus ein oder vielen kleinbuchstaben und zahlen besteht - > fehler
ew<<
Hi walker,
danke, versteh das aber nicht, was solls, ....
In deinem Ausdruck werden nach sämtlichen Zeichen zwischen [ und ]
gesucht und !~ sorgt dafür dass eben nur diese vorkommen dürfen.
In deinem Fall ' ' (Leerzeichen), kleine Buchstaben, Ziffern, und...
\s = leerzeichen
\s = Alle Whitespace-Character (je nach Systemkonfiguration), also
Space, Tab, \n, \r z.B.
Willst du kein Leerzeichen, nimm es einfach aus der Expression:
if($NameB !~ /[1]+$/)
Übrigens, ohne +$ wird nur das erste Zeichen überprüft.
^ = Anfang des Ausdrucks
$ = Ende
Schau dir den Link von Eternius am besten nochmal an.
Gruß,
Lin
a-z0-9 ↩︎
hi Lin!
danke.
ew<<