Hilfe bei regulärem Ausdruck

Commanderalpha

Grünschnabel
Hallo,

ich bräuchte mal Hilfe bei einem speziellen regulären Ausdruck.
Bei mir "matched" er nur teilweise richtig.

Ich habe den Ausdruck der Einfachheit halber aufgeteilt.

Code:
'/[äöüÄÖÜ]/'           /* sucht nach Umlauten             --> Fehler */ 
'/\s/'                      /* sucht nach Steuerzeichen      --> Fehler */ 
'/[_]/'                     /* sucht nach Unterstrichen	      --> Fehler */

/^([A-Z]{1}[a-z]+((([-][A-Z]{1}[a-z]+)*)|(([-][0-9]{4})*))$)/    /* --> OK */

Der ZielString soll eine Kette aus Zeichen sein, welche
- mit einem Wort anfangen
- mit einem Bindestrich (Minus) gekoppelt werden​

Wörter sollen dabei:
- Groß anfangen
- Mindestens aus 2 Buchstaben bestehen
- Wörter können durch 4stellige Zahlen ersetzt werden falls es nicht das erste Wort ist.​

Beispiele:
"Test-Eins",
"Seite-Zwei",
"Seite-2004",
"Ergebnis-Januar-2004",
"Ergebnis-2006-Gesamt",
"Einfach"


bei mir klappt das mit den Zahlen nicht. Ich kann nur Wörter an einander koppeln ohne Fehlermeldung.

Falls mir jemand helfen kann...
ich bin für Vorschläge offen.

mfg Commanderalpha
 
So gehts leider nicht. :(

Sowas "A-Bbbb" oder "1111-Test" sollte nicht möglich sein.

ist es bei der vorgeschlagenen aber leider.

Als Testumgebung hab ich folgendes kurzes PHP-Script geschrieben.

PHP:
<?php

	error_reporting(E_ALL);
	/* Hier der reguläre Ausdruck */
    $regex = '/[A-Z][a-z]+(?:-[A-Z][a-z]+|-[0-9]{4})*$/';
	/* Ende regulärer Ausdruck */	
	
    if(isset($_POST['eingabe'])) {
        echo "Eingabe:<br />\n";
        echo "<pre>\n";
        echo $_POST['eingabe'];
        echo "</pre>\n";
        if(preg_match($regex, $_POST['eingabe'])) {
            echo "<span style=\"color: #008000\">ID OK</span><br />\n";
        } else {
            echo "<span style=\"color: #FF0000\">ID nicht OK</span><br />\n";
        }
    }
    echo "Regex:<br />\n";
    echo "<pre>\n";
    echo $regex;
    echo "</pre>\n";
    echo "<form action=\"Untitled-1.php\" method=\"POST\">\n";
    echo "    <input type=\"text\" value=\"".$_POST['eingabe']."\" name=\"eingabe\" />\n";
    echo "    <input type=\"submit\" name=\"testen\" />\n";
    echo "</form>\n";

?>

Wer sonst noch vorschläge hat, bitte melden.
 
HEUREKA! :)

ich habs! und die Lösung war so einfach...

Code:
/^([A-Z]{1}[a-z]+(([-][A-Z]{1}[a-z]+)|([-][0-9]{4}))*$)/

der Unterschied is aber gering logisch ;-)

Danke
Commanderalpha
 
Du hast ganz einfach vergessen das Zeichen für den Zeichenkettenanfang (^) aus meinem Vorschlag zu kopieren.
 
Zurück