Problem mit regulärem Ausdruck
TED116
- perl
Hallo,
ich habe ein Problem mit einem regulärem Ausdruck.
Ich möchte überprüfen, ob im Feld "Bemerkungen" Sonderzeichen eingegeben wurden, dies mache ich mit folendem Ausdruck
unless ($bem =~ /^([a-zA-ZäöüÄÖÜß0-9-.\s,:;?!"\ ]+)$/)
{
...
}
Wird allerdings im Feld Bermerkung nichts eingegeben, meldet er mireinen Fehler. Dies habe ich doch aber mit /s abgefangen oder?
Was ist nicht korrekt?
grüsse, ted116
Hi,
Ich möchte überprüfen, ob im Feld "Bemerkungen" Sonderzeichen
eingegeben wurden, dies mache ich mit folendem Ausdruckunless ($bem =~ /^([a-zA-ZäöüÄÖÜß0-9-.\s,:;?!"\ ]+)$/)
{
...}
also, irgendwie suchst du da drin jetzt nach so ziehmlich allen
Zeichen - ausserdem hast du auch viel falsch maskiert. Versuchs
doch mal so:
if ($bem =~ /[aeoeueAeOeUess.,:;?!"]/) #s fuer Mehrzeilige Suche
{
}
Wird allerdings im Feld Bermerkung nichts eingegeben, meldet er
mireinen Fehler. Dies habe ich doch aber mit /s abgefangen oder?
Den Fehler sollte er immer melden, wegen der fehlerhaften
Maskierung.
mfg
CK1
Hallo,
danke für Deinen Hinweis. An die regulären Ausdrücke muss ich mich erst noch gewöhnen.
also, irgendwie suchst du da drin jetzt nach so ziehmlich allen
Zeichen - ausserdem hast du auch viel falsch maskiert. Versuchs
doch mal so:if ($bem =~ /[aeoeueAeOeUess.,:;?!"]/) #s fuer Mehrzeilige Suche
evntl. noch anfuegen
Würde dies also auch gehen?
unless ($bem =~ /^([a-zA-ZäöüÄÖÜß0-9-\s.,:;?!" ]+)$/)
womit werden Leerzeichen abgefangen?
grüsse, ted116
Hi!
unless ($bem =~ /^([a-zA-ZäöüÄÖÜß0-9-.\s,:;?!"\ ]+)$/)
Wird allerdings im Feld Bermerkung nichts eingegeben, meldet er mireinen Fehler. Dies habe ich doch aber mit /s abgefangen oder?
/s ? Wo steht das? Und was soll es bewirken?
Was ist nicht korrekt?
1. Lies die perlre manpage, und vielleicht auch den Abschnitt "Quote and Quote-like Operators" und folgender in perlop.
2. Nimm * statt + als Quantifier.
(Reihenfolge auch vertauschbar ;-) )
So long
/s ? Wo steht das? Und was soll es bewirken?
Sorry, ich meinte \s.
Bedeutung: findet Leerzeichen sowie Steuerzeichen aus (12-15)
Ich dachte, so könnte man Leerzeichen abfangen. Nicht korrekt?
Mit den regulären Ausdrücken bin ich leider noch nicht so einig ;-)
gruß ted116
Sorry, ich meinte \s.
Bedeutung: findet Leerzeichen sowie Steuerzeichen aus (12-15)
Ich dachte, so könnte man Leerzeichen abfangen. Nicht korrekt?
Nee. Ein Leerzeichen (bzw. die anderen white-spaces, also \s) ist ein *ganz normales Zeichen*. In Deinem Fall hat der User aber *gar nichts* eingegeben, also noch nicht mal ein Leerzeichen. Mit dem Quantifier + am Ende Deines RegExps verlangst Du, dass *mindestens eines* der dort aufgefuehrten Zeichen vorliegt. Wenn aber *nichts* eingegeben wurde, liegt dieser Fall nicht vor, weshalb in die Fehlermeldung verzweigt wird. Deshalb musst Du stattdessen den Quantifier * verwenden, der erlaubt auch das Vorhandensein *keines* Zeichens, also eines voellig leeren Strings (Nullstring).
So long
Hallo,
ich habe ein Problem mit einem regulärem Ausdruck.
Ich möchte überprüfen, ob im Feld "Bemerkungen" Sonderzeichen eingegeben wurden, dies mache ich mit folendem Ausdruckunless ($bem =~ /^([a-zA-ZäöüÄÖÜß0-9-.\s,:;?!"\ ]+)$/)
{
...}
Wird allerdings im Feld Bermerkung nichts eingegeben, meldet er mireinen Fehler. Dies habe ich doch aber mit /s abgefangen oder?
Was ist nicht korrekt?
grüsse, ted116
also ich vermute mal, du verwendest:
use strict
irgendwo und wenn das feld bemerkungen nicht ausgefüllt wurde isses leer
und die var $bem ist nicht definiert.
eventuell $bem = $IN{'BERMERKUNG'} ?
der ausdruck ist schon ein wenig abenteuerlich, aber wer's braucht, der braucht's so.
Struppi.