Zum Inhalt springen

Powermail RegExp auf PLZ prüfen

Erstellt am 30. April 2009 · 8 Antworten · letzte Antwort am 4. Mai 2009

Tags: Powermail, Frage

MEller ·

Leute ich werde Irre, warum geht das nicht?

plugin.tx_powermail_pi1 {
  validate.uid15.expression = ^[0-9]{5}^
  validate.uid15.errormsg = bitte "fünfstellige PLZ" eingeben
}

Helft mir mal kurz bitte - Danke!

Version ist 1.4.13

Julian.​Hofmann ·

Hallo.

Ganz banal gefragt: validiert Dein powermail überhaupt via PHP? Meine mich zu erinnern, dass regExps nur via PHP und nicht (wie's Standard ist) per JS nutzbar sind.

Viele Grüße
Julian

MEller ·

Danke für die Antworten.
Die Validierung via java ist einfach so-da und ehrlich gesagt, möchte ich nicht nur eine Prüfung via java. Es gibt auche besucher ohne java....

Die Prüfung via php durch TS ist mir sympathischer.

Es funktioniert auch (fast) alles. Pflichtfelder, auch ein [a..b] etc.

Was nicht funktioniert ist die Prüfung auf eine 5-stellige Zahl, das sollte doch mit dem Code aus dem ersten Post funktionieren, oder?

Eine 6-stellige eingabe wird ebenfalls akzeptiert - warum.

einpraegsam.​net ·

Javascript ist etwas anderes als Java aber im Prinzip sind deine Bedenken berechtigt.

Nur mal ins Blaue:
Versuch mal die regEx ohne geschweifte Klammern zu schreiben - bin zwar kein regEx Experte - sollte aber irgendwie so möglich sein schätze ich:

validate.uid15.expression = ^[0-9][0-9][0-9][0-9][0-9]^
MEller ·
plugin.tx_powermail_pi1 {
  # validate.uid15.expression = ^[0-9]{5}^
  validate.uid15.expression = ^[0-9][0-9][0-9][0-9][0-9]^
  validate.uid15.errormsg = bitte "fünfstellige PLZ, Ort" eingeben
}

Geht leider nicht es drückt anscheinend mind. 5-stellig aus. #evil#

Julian.​Hofmann ·

Ich klink mich schnell nochmal ein. Bin zwar auch kein RegExp-Guru, aber habe glaub ich den Verdacht:

Beide genannten RegExp fordern ein, dass im zu validierenden String 5 Ziffern hintereinander vorkommen. Der RegExp macht keine weitere Aussage. Diese Bedingung trifft zu für:
abc12345def, 12345def, abc12345, 123456,...
Entscheidend dürfte sein, dass die Eingrenzung fehlt, dass der String nur daraus besteht, also nichts davor und nichts danach folgt. Dafür ist zu Beginn ein ^zu notieren, das besagt, dass den Stringanfang markiert, udn ein $ am Ende für das Ende des Strings.

validate.uid15.expression = /^[0-9]{5}$/
MEller ·

Das ist es!
Mein Denkfehler war der ^ - er maskierte hier - fällt auf wenn man deinen Code liest.