Regex-Pattern mit Punkt oder Komma?
Hallo,
ich bin gerade dabei, ein wenig zu programmieren. In meinem HTML-Code gibt es ein Input-Element, in das Preise eingegeben werden sollen, die ich später mit PHP verwerte. Ich habe bisher diese Regex-Pattern genutzt. ^\d*(\.\d{0,2})?$
Die funktionierte auch wunderbar, aber lässt eben nur Punkte als Dezimaltrennzeichen zu. Nun will ich aber auch Kommas zulassen und habe daher das hier geschrieben ^\d*((\.|,)\d{0,2})?$.
Diese Pattern will aber nicht funktionieren und lässt jetzt gar nichts mehr zu. Woran liegt das?
Vielen Dank im Voraus
Edit: Das Problem habe ich lösen können. Die Pattern war richtig, so, wie es ja auch viele gesagt haben. Mir ist dann aufgefallen, dass ich Input type="number" genutzt hatte. Ich habe es zu type = "text" geändert, denn type="number" akzeptiert unsere europäischen Kommas nicht ;). Jetzt funktioniert es. Danke an alle!
4 Antworten
Ich gehe mal davon aus, das der Punkt hinter dem $ nicht im Regex steht, oder? Ansonsten sieht der Ausdruck richtig aus. Vielleicht kannst du probieren, ob es besser wird, wenn du vor das Komma auch einen Backslash machst. Falls du das ganze in einer replace Funktion nutzt, wäre es auch gut, wenn du Punkt und Komma in eine non-capturing group packst, also ^\d*((?:\.|,)\d{0,2})?$
ich habe Input type="number" genutzt, was nicht funktioniert. Jetzt mit type="text" geht es. Trotzdem danke dir!
Bei mir funktioniert deine neue Regex bestens, sowohl mit Komma als auch mit Punkt.
Du kannst sie auch hier online testen: https://regex101.com/
ich habe Input type="number" genutzt, was nicht funktioniert. Jetzt mit type="text" geht es. Trotzdem danke dir!
Hallo,
vermute das Oder muss auch escaped werden. Ansonsten geht evtl. auch
[,.]
vermute das Oder muss auch escaped werden
Nein, denn dann "wirkt" es ja nicht mehr.
Also bei mir funktioniert es wunderbar. Ich habe es einmal auf JavaScript gestellt und einmal auf PCRE, was PHP nutzt und beides mit Erfolg. Es scheint also etwas in deinem Code falsch zu sein, welchen wir leider nicht prüfen können, da du diesen nicht gepostet hast

Ok, gut, das mag sein. Das liegt also am Code, den wir nicht sehen. Damit du das schnell feststellen kannst, ob es am Regex liegt, empfehle ich für die Zukunft Regexr oder Regex101. Beides super Seiten zum Testen von Regex : )
ich habe Input type="number" genutzt, was nicht funktioniert. Jetzt mit type="text" geht es. Trotzdem danke dir!