Karl Heinz K.: Reguläre Ausdrücke: Nur Buchstaben Zahlen und Zeichen

Hallo Forum,

ich habe nun bereits eine Stunde gesucht und rumgebastelt aber ich bekomme folgendes nicht hin:

Ich möchte Sätze daraufhin kontrollieren, ob nur Buchstaben a-z, A-Z, Zahlen 0-9 und einige vereinzelnte Zeichen wie .,?! in dem Satz vorkommen.

Ich bin so weit:
if( preg_match("/[1]+$/", $sentence) ) { // MACHE WAS }

Also für $sentence = "Hallo, wie geht es dir?"; soll die Bedingung wahr sein und für $sentence = "Tom & Jerry gingen in den Wald!"; soll die Bedingung nicht wahr sein.

Ich würde mich sehr freuen, wenn mir jemand bei diesem undurchsichtigen Problem hilft...


  1. a-zA-Z0-9,.!? ↩︎

  1. @@Karl Heinz K.:

    nuqneH

    Ich möchte Sätze daraufhin kontrollieren, ob nur Buchstaben a-z, A-Z, Zahlen 0-9 und einige vereinzelnte Zeichen wie .,?! in dem Satz vorkommen.

    Keine Umlaute, kein ß, kein à, kein é? Ich halte die Beschränkung auf a-z, A-Z für reichlich du^Wungeeignet.

    if( preg_match("/[1]+$/", $sentence) ) { // MACHE WAS }

    Also für $sentence = "Hallo, wie geht es dir?"; soll die Bedingung wahr sein und für $sentence = "Tom & Jerry gingen in den Wald!"; soll die Bedingung nicht wahr sein.

    Und warum negierst du dann die Zeichenklasse?

    Qapla'

    --
    Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)

    1. a-zA-Z0-9,.!? ↩︎

    1. Das einfache oben sollte erstmal als Beispiel dienen um es nicht unnötig komplizierter zu machen.

      Hab den Dreh nun raus, vielen Dank!

      1. Von wegen...

        Bei meinem kurzen Beispiel hat's geklappt. Bei anderen nicht. Zum Beipsiel hier hat es nicht geklappt:

        "Sounds wonderful! (will google it). We took the kids to themepark etc last week and it was fab! Enjoy it! (& get some pics?!) Xx"

        Der Ausdruck wurde wahr...

    2. Mahlzeit Gunnar Bittersmann,

      if( preg_match("/[1]+$/", $sentence) ) { // MACHE WAS }

      Und warum negierst du dann die Zeichenklasse?

      Wie kommst Du darauf?

      MfG,
      EKKi

      --
      sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|

      1. a-zA-Z0-9,.!? ↩︎

      1. @@EKKi:

        nuqneH

        Und warum negierst du dann die Zeichenklasse?

        Wie kommst Du darauf?

        Sehfehler.

        Merke: ^[ != [^

        Qapla'

        --
        Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
        1. Mahlzeit Gunnar Bittersmann,

          Sehfehler.

          Hier hast Du 'ne Brille: 8

          Merke: ^[ != [^

          Obwohl ... das bringt Dir ja eh nichts - so ohne Augen ... ;-]

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Mahlzeit Karl Heinz K.,

    Ich bin so weit:
    if( preg_match("/[1]+$/", $sentence) ) { // MACHE WAS }

    preg_match() liefert die *Anzahl* der evtl. vorhandenen Muster. FALSE wird nur zurückgegeben, wenn ein Fehler aufgetreten ist.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|

    1. a-zA-Z0-9,.!? ↩︎

  3. Hi,

    Ich möchte Sätze

    Sätze enthalten im Normalfall Leerzeichen zwischen den Worten.

    if( preg_match("/[1]+$/", $sentence) ) { // MACHE WAS }

    In Deiner Zeichenklasse sind keine Leerzeichen.
    Normale Sätze (also solche, die aus mehr als einem Wort bestehen), kommen also nicht durch.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.

    1. a-zA-Z0-9,.!? ↩︎

  4. Hi,

    Ich möchte Sätze daraufhin kontrollieren, ob nur Buchstaben a-z, A-Z, Zahlen 0-9 und einige vereinzelnte Zeichen wie .,?! in dem Satz vorkommen.

    Ich bin so weit:
    if( preg_match("/[1]+$/", $sentence) ) { // MACHE WAS }

    Also wenn ich das mit den Metazeichen richtig verstehe, dann trifft der Punkt z.B. für alle Zeichen zu, wenn er nicht mit einem Backslash maskiert wird. Zumindest das Fragezeichen dürfte auch noch problematisch sein.

    gruß
    peter


    1. a-zA-Z0-9,.!? ↩︎

    1. Hi,

      if( preg_match("/[1]+$/", $sentence) ) { // MACHE WAS }

      Also wenn ich das mit den Metazeichen richtig verstehe, dann trifft der Punkt z.B. für alle Zeichen zu, wenn er nicht mit einem Backslash maskiert wird. Zumindest das Fragezeichen dürfte auch noch problematisch sein.

      Nö. Du mußt auch den Abschnitt über Zeichenklassen lesen (insbesondere das, was dort über Metazeichen steht).

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.

      1. a-zA-Z0-9,.!? ↩︎

      1. Hi MudGuard,

        vielen Dank für den Hinweis.

        Nö. Du mußt auch den Abschnitt über Zeichenklassen lesen (insbesondere das, was dort über Metazeichen steht).

        Da könnte ja auch mal ein Hinweis im Abschnitt über die Metazeichen stehen.

        Versuche gerade, die ganze Sache mal so einigermaßen zu verstehen und war schon ein paar Mal am Rande des Wahnsinns gelandet.

        Is dann schon ziemlich mühsam, wenn man manche Sachen so einigermaßen kapiert hat und dann bei jedem "Neuen" alles andere nochmal durchstöbern muß, ob da zum Aktuellen nicht noch was anderes stand.

        gruß
        peter