RegEx - Conditions

TheFrager

Grünschnabel
yo, habe ein kleines Problem bzgl. reg. Ausdrücken:

Ich möchte einen String per preg_match() auf seine Gültigkeit untersuchen.
Zum einen soll der String keine aufeinanderfolgenden Unterstriche ("_") enthalten, zum anderen soll ein weiterer Ausdruck darauf angewendet werden, nichts kompliziertes also:
PHP:
$string = "nur_ein__test";
$pattern1 = "/_{2}/"; // prüft auf doppelte Unterstriche
$pattern2 = "/^[a-z][a-z0-9_]{1,31}$/"; // prüft auf weitere Gültigkeit

	if(!preg_match($pattern1,$string) && preg_match($pattern2,$string))
	print "String ist gültig!";
	else
	print "string ist ungültig!";
	
// Würde in diesem Fall "String ist ungültig!" ausgeben
Das Skript funktioniert auch wunderbar, aber nun meine Frage: Benötigt man für so eine Aufgabe wirklich zwei reg. Ausdrücke?
Mich würde mal _aus Prinzip_ interessieren, ob man das nicht auch mit einem konditionalen Ausdruck machen könnte, der $pattern1 und $pattern2 zusammenfasst:
PHP:
$string = "nur_ein__test";
$pattern = "/^(?(WENN_KEIN_PATTERN1)DANN_PATTERN2)$/"; /* prüft auf doppelte Unterstriche und weitere Gültigkeit; WENN keine doppelten Unterstriche, DANN prüfen auf weitere Gültigkeit */

	if(preg_match($pattern,$string))
	print "String ist gültig!";
	else
	print "string ist ungültig!";
	
// Müsste in diesem Fall "String ist ungültig!" ausgeben
Wie müsste dann die Assertion "WENN KEIN PATTERN1" in o.g. $pattern aussehen? Ich hab schon viel rumprobiert, aber bisher leider keine Lösung gefunden! Danke für eure Tipps!
 
Zurück