mrky: RegExp

Hallo Leute,

Ich benötige eine RegExp die die Reisepassnummer beschreibt.

Eigenschaften:

  • das erste Zeichen ist eine Buchstabe
  • danach folgen 7 Ziffern
  • keine Leerzeichen
  • keine Umlaute und keine Buchstaben a-z
  • keine Sonderzeichen !?$§" usw.

Ich bin bis jetzt soweit gekommen   ([a-zA-Z][^0a-zA-ZäöüÄÖÜ_ ])[0-9]{6}

Wurde mich sehr über eine Lösung  freuen.

LG mrky

  1. @@mrky:

    nuqneH

    • das erste Zeichen ist eine Buchstabe
    • danach folgen 7 Ziffern

    Wenn du genau angibst, was zulässig ist, dann bist du fertig.

    • keine Leerzeichen
    • keine Umlaute und keine Buchstaben a-z
    • keine Sonderzeichen !?$§" usw.

    Dass das nicht vorkommen darf, ergibt sich bereits aus der Angabe, was vorkommen darf.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
  2. Wurde mich sehr über eine Lösung  freuen.

    Zawiniski würde sich darüber freuen, wenn du Stringfunktionen verwendest:
    Ist das erste Zeichen ein Buchstabe und ist Zeichen 2 bis 8 eine Dezimalzahl?

    Unter PHP ist das mit substr(), ctype_alpha() und  ctype_digit() wohl ohne Probleme möglich.

    Aber wenn du unbedingt einen regulären Ausdruck willst

    [1]\d{7}$

    A bis Z (groß oder klein) gefolgt von 7 exakt Ziffern.


    1. A-Za-z ↩︎

    1. Unter PHP ist das mit substr(), ctype_alpha() und  ctype_digit() wohl ohne Probleme möglich.

      Selbstverständlich ist das unter ziemlich jeder C-kompatiblen Sprache möglich bzw. unter jeder Sprache, die auf ctype.h-Bibliothek zurückgreift (wie eben auch PHP in diesem Fall).

    2. @@suit:

      nuqneH

      A bis Z (groß oder klein)

      Ich glaub nicht, dass in einer Reisepassnummer kleine Buchstaben vorkommen. Also eher: [1]\d{7}$

      Nutzereingaben kann man case-insensitiv prüfen oder gleich alle Buchstaben in Großbuchstaben umgewandeln.

      Qapla'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)

      1. A-Z ↩︎

      1. Ich glaub nicht, dass in einer Reisepassnummer kleine Buchstaben vorkommen. Also eher: [1]\d{7}$

        Ja das ist richtig.

        Nutzereingaben kann man case-insensitiv prüfen oder gleich alle Buchstaben in Großbuchstaben umgewandeln.

        Ich ging davon aus, dass hier Nutzereingaben geprüft werden ;) - hinten werden aber vermutlich nicht nur Ziffern sondern auch große O vorkommen (es gibt sicher genug Leute, die kennen den "Trick" mit dem durchstreichen der Null nicht). Wenn wir schon bei Nutzereingaben sind, sollte geklärt werden, was hier ggf. automatisch fehlerkorrigiert wird.

        bei der IBAN-Eingabe z.B. werden alle Leerzeichen entfernt, da diese nur in Papierform eingefügt werden. Als syntaktisch falsch dürfen sie aber bei einer Überprüfung nicht gewertet werden, weil es durchaus Leute gibt, die das so eintippen.


        1. A-Z ↩︎