Veröffentlicht 18. Mai 200619 j Hallo, ich bin verzweifelt am Versuchen, mir ein RegExp zu erstellen, der - in Worten - eine Benutzereingabe folgendermaßen prüfen soll: die ersten 2 Zeichen müssen Zahlen sein auf diese 2 Zahlen kann ein Punkt folgen, aber nichts anderes folgt ein Punkt, müssen wieder 2 Zahlen folgen auf diese 2 Zahlen kann wieder ein Punkt folgen, aber nichts anderes folgt ein Punkt, müssen wieder 2 Zahlen folgen auf diese 2 Zahlen kann wieder ein Punkt folgen, aber nichts anderes folgt ein Punkt, müsen eine bis max. vier Zahlen folgen Erlaubte Eingaben wären also: 11 oder 11.11 oder 11.11.11 oder 11.11.11.1 - 11.11.11.1111 Mein Versuch sieht so aus: /^([0-9]{2})(\.{0,1})(?(2)([0-9]{2}))(\.{0,1})(?(4)([0-9]{2}))(\.{0,1})(?(6)([0-9]{1,4}))$/ Beim Testen mit match bekomme ich folgende Meldung: invalid quantifier Wenn ich den RegExp in PHP mit preg_match ausführe, funktioniert es allerdings - zumindest kommen keinerlei Fehlermeldungen und die Funktion wird ausgeführt. Weiß vielleicht jemand, wo das Problem liegen könnte? tine
18. Mai 200619 j Also ich hab deine RegExp jetzt mal abgeändert: ^([0-9]{2})(\.[0-9]{2}){1,2}(\.[0-9]{1,4})?$ Die kannst du z.B. hier testen oder den RegexCoach benutzen. Damit hab ich das auch gemacht. einen Fehler hat es noch, und zwar kann nach dem 2ten Punkt auch nur 1 Zahl stehen :\
18. Mai 200619 j Vielen Dank für die Hilfe. Das bringt mich schon mal ein ganzes Stück weiter. Werd jetzt mal auf der von dir geposteten Seite noch bisschen rumtesten, um das mit den 2 Zahlen nach einem Punkt noch hinzubekommen. tine
18. Mai 200619 j Beim Testen mit match bekomme ich folgende Meldung: invalid quantifier Das liegt daran, dass die RegExp-Engine von Java-Script kein Lookaround unterstützt. So sollte es gehen: /^((\d{2})((\.\d{2}){0,2}|(\.\d{2}){2}(\.\d{1,4})))$/
18. Mai 200619 j Danke @Monty82. Das funktioniert genau so wie ich es brauche. Hatte mir schon gedacht, dass es irgendwie an den Bedingungsabfragen liegen muss, hatte aber keine Ahnung, wie ich die umgehen kann. tine
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.