RegEx für Preise?
Ich bin auf der Suche nach einem RegEx für die Preise.
So sollte es X Nummern vor, als ein "," und am Ende 2 zahlen max.
Kann jemand mich unterstützen und post es bitte?
Gibt es Währungen gibt, die brauchen 3 Nachkommastellen, auch der USD und der EUR 3 Dezimalstellen in einigen Szenarien.
Wenn USD und EUR brauchen drei stellen nach dem Komma?
AFAIK, alle EU-Länder die Berechnung der gas-Preise mit einem 3-stelliger Präzision. Ein weiteres Beispiel: die Forex-Wechselkurse (5 Dezimalstellen glaube ich).
Wenn USD und EUR brauchen drei stellen nach dem Komma?
AFAIK, alle EU-Länder die Berechnung der gas-Preise mit einem 3-stelliger Präzision. Ein weiteres Beispiel: die Forex-Wechselkurse (5 Dezimalstellen glaube ich).
InformationsquelleAutor Kovu | 2009-10-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
In welcher Sprache willst du verwenden?
Es sollte so etwas wie:
Erklärung:
X Anzahl vor ist:
^\d+
wo^
bedeutet den Anfang der Zeichenkette,\d
bedeutet eine Ziffer und+
bedeutet, dass ein oder mehrVerwenden wir-Gruppe
()
mit einem Fragezeichen, eine?
bedeutet: mit dem übereinstimmen, was innerhalb der Gruppe, die ein oder kein mal.innerhalb der Gruppe gibt es
,\d{1,2}
, die,
ist das Komma, die Sie schrieb,\d
noch eine Ziffer{1,2}
Mittel entsprechen der vorherigen Stelle ein oder zwei mal.Den letzten
$
entspricht dem Ende der Zeichenfolge.InformationsquelleAutor Andrea Ambu
War ich nicht zufrieden mit den bisherigen Antworten. Hier ist mein nehmen auf Sie:
(eine ausführliche Erklärung hier: https://regex101.com/r/cG6iO8/1)
Gilt für alle Fälle, unter
Aber auch seltsame Sachen wie
In Fall, dass Sie wollen auch 5 und 1000 (ich persönlich Wunde nicht, wie mit ALLEN zahlen), dann fügen Sie einfach ein "?" wie so:
InformationsquelleAutor elgehelge
Ich arbeite an einem ähnlichen problem. Allerdings möchte ich nur zu entsprechen, wenn ein Währungssymbol oder der String ist ebenfalls im String enthalten wie EUR,€,USD oder $. Das Symbol kann folgende oder führende. Ist mir egal, wenn es Raum zwischen der Anzahl und der Währung substring. Ich habe die Nummer matching auf die bisherige Diskussion und gebrauchtpreis-Nummer: \d{1,3}(?:[.,]\d{3})*(?:[.,]\d{2})?
Hier ist das Endergebnis:
Benutze ich
(\d{1,3}(?:[.,]\d{3})*(?:[.,]\d{2})?)\s?(USD|EUR|€|\$)
als ein Muster zum Abgleich gegen eine Währung-symbol (hier mit Toleranz für ein Leerzeichen). Ich denke, dass können Sie leicht anpassen für andere WährungenEinen Kern mit der neuesten Version finden Sie unter https://gist.github.com/wischweh/b6c0ac878913cca8b1ba
fast perfekt. Wie der Kommentar oben hervorgehoben, dies erfordert, dass jede Zahl, die größer als 3 Ziffern ein Komma, um ein signal zu tausenden. Ein Wert von "$9999.00" nicht entsprechen, aber "$9,999.00" entsprechen. Ich war in der Lage, diese arbeiten, indem Sie ändern das limit (USD|EUR|€|\$|£)\s?(\d{1,}(?:[.,]\d{3})*(?:[.,]\d{2}))|(\d{1,3}(?:[.,]\d{3})*(?:[.,]\d{2})?)\s?(USD|EUR)
InformationsquelleAutor r-hold
Also ich lief in ein ähnliches problem, benötigen, um zu überprüfen, ob eine beliebige Zeichenfolge ein Preis, aber brauchte viel mehr Widerstandskraft als die regexes in diesem thread und viele andere threads.
Brauchte ich eine regex, die passen würden, Sie alle der folgenden:
Und nicht um Spiel-Zeug wie IP-Adressen. Ich konnte nicht herausfinden, einen einzigen regex zu beschäftigen mit dem europäischen und nicht-europäischen Zeug auf einen Schlag so schrieb ich ein kleines bisschen Ruby-code um die Normalisierung der Preise:
Der einzige Unterschied zwischen den beiden regexes ist die vertauscht Dezimalpunkt und Komma. Ich werde versuchen und brechen, was das ist zu tun:
Den ersten Teil:
Dies ist eine Aufstellung von zahlen, die Folgen dieser form: 1,000 1,000,000 100 12. Aber es nicht zulassen, dass führende Nullen. Es ist für die korrekt formatierten Nummern, die Gruppen von 3 Ziffern, getrennt durch das Trennzeichen für Tausender.
Zweiten Teil:
Nur Platzhalter für eine beliebige Anzahl von 1 oder mehr mal. Sie könnten auch 0-mal oder mehr, wenn Sie wollen, zu entsprechen: .11 .34 .00 etc.
Den letzten Teil:
Dies ist die Dezimalstelle bit. Warum bis zu 9 Numerik, Fragen Sie? Ich habe es gesehen. Dieses regex soll in der Lage sein zu handhaben, alle seltsamen und wunderbaren Preis, der Sie sieht, und ich habe gesehen, einige Händler nutzen bis zu 9 Dezimalstellen in den Preisen. In der Regel alle 0s, aber wir würden nicht wollen, zu verpassen, auf dem Daten ^_^
Hoffentlich hilft der nächsten person, die zu kommen, müssen Prozess beliebig schlecht formatiert Preis-strings oder entweder europäischen oder nicht-europäischen format 🙂
InformationsquelleAutor Samwhoo
InformationsquelleAutor Matthew Scharley
Ich arbeite gerade an einer kleinen Funktion mit regex zu erhalten Preis Betrag in einem String :
diese scheint zu funktionieren mit kleinen Preis (0,00 bis 999,99) und verschiedene Währung :
$12.34 -> 12.34
$12,34 -> 12,34
$12.00 -> 12.00 Uhr
$12 -> 12
12€ -> 12
12,11€ -> 12,11
12.999€ -> 12.99
12.9€ -> 12.9
£999.99€ -> 999.99
...
InformationsquelleAutor Tobliug
\d+((,\d+)"+)?(.\d+)?(.\d+)?(,\d+)?
zur Abdeckung aller
5
5.00
1,000
1,000,000.99
5,99 (EU-Preis)
5.999,99 (europäischer Preis)
0.11
0.00
InformationsquelleAutor Ankur Gupta
^[0-9]+.?[0-9]{2}?$
hier ist eine, die erlaubt:
0,12, 12.01,etc
und nicht für 12.,12.1, 19.0.0 etc
InformationsquelleAutor zardilior
Dieser code funktionierte für mich !! (PHP)
InformationsquelleAutor HoQuocThinh
Bisher habe ich versucht, dies ist die beste
\d{1,3}[,\\.]?(\\d{1,2})?
https://regex101.com/r/xT8aQ7/1
InformationsquelleAutor Hien
Diesem man vernünftigerweise arbeitet, wenn Sie möglicherweise oder möglicherweise nicht dezimal, sondern ein Betrag, der zeigt, wie dies mit 100.000 oder 100.000.00. Getestet mit Clojure nur
\d{1,3}(?:[.,]\d{3})*(?:[.,]\d{2,3})
InformationsquelleAutor Chiradip Mandal
Ziemlich einfach "," getrennt zahlen(Oder keine Trennung) mit 2 Dezimalstellen , unterstützt deliminator aber nicht zwingen. Braucht einige Verbesserungen, aber sollte funktionieren.
Diese müssen möglicherweise einige Bearbeitung, um es ordnungsgemäß
Kurze Erklärung: Spiele 1-3 zahlen(Oder gar nichts) entspricht einem Komma, gefolgt von 3 zahlen so oft wie nötig(Oder einfach zahlen), entspricht dezimal-Punkt gefolgt von 1 oder 2 zahlen(Oder Nichts)
InformationsquelleAutor Scott Paterson
etwas wie \d+,\d{2} ist falsch, da das \d entspricht [0-9\.] also 12.34,1.
werden sollte: [0-9]+,[0-9]{2} (oder [0-9]+,[0-9]{1,2} nur 1 Dezimalstelle)
Falsch. \d ist eine Abkürzung für [0-9] regular-expressions.info/charclass.html
Das ist nicht wahr, entweder. Es passt zu mehreren weitere unicode-Zeichen.
InformationsquelleAutor anon