Wie formuliert man solch eine Bedingung?
David Schneider
- perl
Hallo liebes Forum,
Arbeite mich jetzt so langsam in Perl ein... aaber:
wie kann ich mit RegExps eine derartige Bedingung formulieren:
Wenn $var _nicht_ mit a-zA-Z oder den Umlauten (ohne ß) beginnt, und dann beliebig oft (also auch keinmal) mit a-zA-Z, den Umlauten (inkl. ß), einem Leerzeichen oder Punkt weitergeht, dann tue.....
Bsp.:
"David"
"David Schneider"
"David.Schneider"
"Dr. David Schneider"
...usw., alles richtig.
(Auch ein Name mit Umlaut am Anfang wäre richtig, mir fällt nur keiner ein...)
".David Schneider"
""
falsch
Verständlich?
Ich bedanke mich für die vielen ausführlichen Antworten ;-P
David Schneider
PS: ich war so weit:
if ($var =~ /[1][^a-zA-ZäöüÄÖÜß\s.]*/g) {
...
}
Das lässt aber zum Beispiel noch Interpunktionszeichen ausser dem Pubkt zu.
^a-zA-ZäöüÄÖÜ ↩︎
Hallo David,
wie kann ich mit RegExps eine derartige Bedingung formulieren:
Wenn $var _nicht_ mit a-zA-Z oder den Umlauten (ohne ß) beginnt, und dann beliebig oft (also auch keinmal) mit a-zA-Z, den Umlauten (inkl. ß), einem Leerzeichen oder Punkt weitergeht, dann tue.....
So funktioniert es bei mir:
if ( $var =~ /[1][ a-zA-Z0-9äöüßÄÖÜ_.-]*$/ ) {
# passt
}
Übrigen, in Zeichenklassen musst du die reservierten Zeichen nicht maskieren.
Vielleicht hilft's
Torsten
a-zA-ZäöüÄÖÜ ↩︎
Hallo,
if ( $var =~ /[1][ a-zA-Z0-9äöüßÄÖÜ_.-]*$/ ) {
Klasse! Das funktioniert genau wie ich wollte. Vielen Dank!
Dabei sollte aber erwähnt werden, dass die Regex sich nicht mit Deiner ursprünglichen Bedingung deckt:
Wenn $var _nicht_ mit a-zA-Z oder den Umlauten (ohne ß) beginnt,
^^^^^^^^
Eigentlich wolltest Du ja das $var _unbedingt_ mit [a-zA-ZäöüÄÖÜ] beginnen muß. Und das ist etwas vollkommen anderes;-)
Grüße
Klaus
a-zA-ZäöüÄÖÜ ↩︎
Hallo Klaus,
Dabei sollte aber erwähnt werden, dass die Regex sich nicht mit Deiner ursprünglichen Bedingung deckt:
Jepp, in dem Punkt war das Ursprungsposting meiner Meinung nach etwas widersprüchlich. Deshalb stand in meinem Vorschlag auch "passt" ;-)
Grüße
Torsten