David Schneider: Wie formuliert man solch eine Bedingung?

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.


  1. ^a-zA-ZäöüÄÖÜ ↩︎

  1. Hallo lieber David

    wie wärs denn damit:

    if ($var !~ /[1]/) {
     ...
    }

    Grüße Oesi


    1. a-zA-ZäöüÄÖÜ ↩︎

  2. 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


    1. a-zA-ZäöüÄÖÜ ↩︎

    1. Hallo Torsten,

      So funktioniert es bei mir:

      if ( $var =~ /[1][ a-zA-Z0-9äöüßÄÖÜ_.-]*$/ ) {
        # passt
      }

      Klasse! Das funktioniert genau wie ich wollte. Vielen Dank!

      David Schneider


      1. a-zA-ZäöüÄÖÜ ↩︎

      1. 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


        1. a-zA-ZäöüÄÖÜ ↩︎

        1. 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