PHP Reguläre Ausdrücke

asseskiller

Lt. Junior Grade
Registriert
Sep. 2005
Beiträge
447
Hi leute,
hab mir dieses tutorial hier mal angeschaut und bin jetzt noch verwirrter als vorher.
http://www.php-resource.de/tutorials/read/10/1/#charclasses

Also mein Ziel ist es 4 Felder zu Überprüfen.

1.Feld (name) soll nur Eingaben erlauben die aus buchstaben und leerzeichen bestehen.
mein vorschlag ist der:

PHP:
<?

checkIfName($string)
{
 $status = preg_match('/^[a-z][ ]/i', $string);
  if($status = 1)
		{
		return false;
		}
	else
		{
		return true;
		}
}
 geht aber nicht

?>
 
is auch quatsch ;D
'/^[a-z][ ]/i' scannt nach nem string der einen buchstaben a-z hat gefolgt von nem leerzeichen (insg. länge 2).

'/^[a-z ]*$/i' wäre die richtige wahl. wenn du leere strings ausschließen willst, nimm statt * ein +

das $ solltest du nicht vergessen. sonst sind auch strings wie "abc123" erlaubt.

darüber hinaus kann ich dir http://www.regular-expressions.info/ empfehlen, wenn du was über regular expressions lernen willst.
 
Zuletzt bearbeitet:
okay hab ich verstanden.
Dann verstehe ich das hier nicht.

PHP:
function checkIfTelephoneNumber($string)
	{
	$status = eregi('^[0-9/ ]*$', $string);
	return $status;
	}
hab ich selbst geschrieben.
Das soll solch eine eingabe zulassen 0172 / 123456789

Ich würde das so interpretieren

^$ anfang und ende der zeichenkette
[0-9/ ]* besagt, das es beliebig viele zeichen seien könne aus den ziffern 0 bis 9, einem Slash oder einem leerzeichen
 
DAS IST FALSCH!
(weiter unten steht die ausgebesserte Version)

Probiers mal so:
Code:
^[0-9]+/| / {1}[0-9]+$

Die Nummer kann dann entweder so: 123456/1234567
oder so: 1234567 / 1234567
angegeben werden.
Habs nur in C# ausprobiert, aber das Pattern sollte eigentlich überall gehen.

Vllt musst du auch noch Delimiter einfügen:
Code:
#^[0-9]+/| / {1}[0-9]+$#
 
Zuletzt bearbeitet:
^
Am Anfang des Strings

[0-9/ ]
Ziffer (0-9), ein Slash oder ein Leerzeichen

*
Multiplizierer - beliebig viele (inklusive 0 - also 'keins')

$
Ende des Strings



Das heißt also: der String muss aus mind. 0 Zeichen aus dem Alphabet '0123456789/ ' bestehen (achte auf das Leerzeichen!).


Innerhalb der eckigen Klammern werden immer Elemente Alphabets angegeben, die dann mit dem Multiplizierer verbunden werden (fehlt dieser, wird 1 angenommen).


Demnach sieht dieser Regex folgende Werte als zulässig an:

0172 / 123456789
0172/123456789
0172 /123456789
0172/ 123456789
0172 / 123456789
0172 123456789
0172 123456789
0172123456789
0172 / 123456789
0172 / 123456789 / / / / //
0172 / 123456789 /////////////
/// 0172 / 123456789

usw.
 
Danke XunnD, hab meinen Fehler ausgebessert.

So sollts gehen (hoffentlich;)):

Code:
^[0-9]+(/| / )[0-9]+$

Es geht: 1234567/1234567
oder: 1234567 / 1234567
 
Zurück
Oben