Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Salut,

ich bin auf der Suche nach einem (freien) PHP-Script, was Reguläre Ausdrücke auf Validität prüft.

Eine Suche nach "regex validator" bringt mir nur Seiten, die mir das als Dienst anbieten - ich suche den dazu nötigen Algorithmus in PHP.

Danke :)

if(preg_match()) ??

naja, wie und warum ? ^^, dafür sind die PHP Dinger ja da. Du kannst es auch mit javascript machen...je nachdem was du tun willst.

Regexp ist so komplex - ich bin mir nicht sicher ob es da überhaupt "validatoren" gibt, valide ist fast alles, ob es das ist was du haben willst, ist eine andere frage.

  • Autor

Es geht darum, einen vom Benutzer eingegebenen RegEx zu validieren, bevor ich ihn im weiteren Verlauf zum Validieren von anderen Werten benutze.

Die detaillierten Infos á la "an Stelle 14 muß die Klammer geschlossen werden" brauche ich dabei nichtmal - mir reicht einfach die Info "das ist ein valider RegEx" (oder eben nicht).

Dann prüfe doch einfach, mittels einer RegEx, ob in der "RegEx" des Users, welche ja nur ein String ist, wenn du sie bekommst, gültige RegEx-Zeichen (^,$,[,], usw...) drin stehen. Das ganze muss von der Syntax her ja nur wie eine RegEx aussehen.

Außerdem. Falls die RegEx vom User nicht valide ist, wird die RegEx eh nicht funktionieren. Und dann weißt du ja, ob der RegEx valide ist oder nicht :confused:

Grüße,

bytebrain

  • Autor
Dann prüfe doch einfach, mittels einer RegEx, ob in der "RegEx" des Users, welche ja nur ein String ist, wenn du sie bekommst, gültige RegEx-Zeichen (^,$,[,], usw...) drin stehen. Das ganze muss von der Syntax her ja nur wie eine RegEx aussehen.

Genau das ist meine Frage: Wie sieht der RegEx aus, mit dem ich RegExe auf Validität prüfe?

Außerdem. Falls die RegEx vom User nicht valide ist, wird die RegEx eh nicht funktionieren. Und dann weißt du ja, ob der RegEx valide ist oder nicht :confused:

Wie fange ich den Fehler ab, der während der Ausführung von preg_match() mit einem fehlerhaften RegEx fliegt?

Genau das ist meine Frage: Wie sieht der RegEx aus, mit dem ich RegExe auf Validität prüfe?

Wie fange ich den Fehler ab, der während der Ausführung von preg_match() mit einem fehlerhaften RegEx fliegt?

Hm... Imho wird es ja eine Mammut-RegEx, da in einer RegEx ja so ziemlich alles drin stehen kann: Zeichen, Sonderzeichen, gequotete Sonderzeichen, usw. ...

Es wird keinen Fehler bei dem Ausführen von preg_match() mit einer nicht validen regEx geben. preg_match() dient ja zur Mustererkennung. Ist die RegEx ungültig, wird das Muster nicht erkannt. Demnach ist der Rückgabewert von preg_match() = 0.

Schau dir aber doch zusätzlich noch die Doku auf php.net an:

PHP: preg_match - Manual

hth,

bytebrain

Edit:

Alternativ: Vielleichst wirst du hier fündig => http://regexlib.com/

Bearbeitet von bytebrain

  • Autor
Imho wird es ja eine Mammut-RegEx

Deswegen frag ich lieber vorher, ob dieses Rad nicht schonmal erfunden wurde ;)

Es wird keinen Fehler bei dem Ausführen von preg_match() mit einer nicht validen regEx geben.

Einspruch. Dieses Script

	$regex = "/[/";

	if (preg_match($regex, "String")) 

		echo "ja";

	else 

		echo "nein";

fliegt mir mit folgendem Fehler um die Ohren:

Warning: preg_match() [function.preg-match]: Compilation failed: missing terminating ] for character class at offset 1 in C:\opt\CoCreate\OneSpace_Manager_2007\Apache\htdocs\arvid\regextest.php on line 4
Soweit soll es eben nicht kommen. Daß "nein" ausgegeben wird, hilft mir nix; ich weiß ja nicht, obs einfach nicht matcht oder tatsächlich der RegEx falsch ist.

Fehlermeldungen unterdrücken und preg_match auswerten. Ein fehlerhafter regex gibt FALSE zurück.


$regex = "/[/";
$result = @preg_match($regex, "String");
if ($result === FALSE) {
echo "Error parsing regex $regex\n";
} elseif ($result == 0) {
echo "No match\n";
} else {
echo "match\n";
}
[/php]

[code] ~> php test.php Error parsing regex /[/ [/code]

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.