DXP GT – Fireplace
DXP GT – Mobile Footer Layer

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