regex-Problem

jdgf

Mitglied
Hallo,

mit einer regex-Anweisung wollte ich Texteingaben wie "4rtzu56" oder "ertz45tr", also Buchstabenkombinationen, in denen Ziffern enthalten sind. Beim regex-Trainer funktionierte der Ausschluss, jetzt aber werden auf der Homepage auch reine Texteingaben abgeblockt.

Was ist hier falsch?
PHP:
{  
$str = $_POST['text'];
if (preg_match('\b([a-z]+\d+[a-z]+|\d+[a-z]+\d+)\b', $str) != true)
{echo template('error_tex');}

Danke für die Hilfe und
lG Dietmar
 
Oder eben False im Fehlerfall. Aber wie deepthroat sagt, ist der Rückgabewert von preg_match() niemals true.
 
Da er einen Typenvergleich anhand =! und nicht ==! macht, macht PHP einen automatischen Typecast. Das bedeuted wenn ein vorkommen gefunden wird ist die Abfrage auch "wahr". Du solltest aber lieber auf false casen.
 
Die verwendete Zeichenkette ist auch kein perl-kompatibler regulärer Ausdruck, da die Begrenzer fehlen.
PHP:
if( preg_match('/\b(?:[a-z]+\d+[a-z]+|\d+[a-z]+\d+)\b/', $str) ) {
	echo template('error_tex');
}
 
Zurück