Was ist der reguläre Ausdruck für eine Dezimalstelle mit einer Genauigkeit von 2?
Gültige Beispiele :
123.12
2
56754
92929292929292.12
0.21
3.1
Ungültige Beispiele:
12.1232
2.23332
e666.76
Der Dezimalpunkt kann optional sein, und es können auch Ganzzahlen enthalten sein.
Antworten:
Gültige Regex-Token variieren je nach Implementierung. Eine generische Form ist:
Kompakter:
Beide gehen davon aus, dass beide mindestens eine Ziffer vor und eine nach der Dezimalstelle haben.
Um zu erfordern, dass die gesamte Zeichenfolge eine Nummer dieses Formulars ist, setzen Sie den Ausdruck in Start- und End-Tags wie (in Perls Form):
Versuchen Sie Folgendes, um Zahlen ohne führende Ziffer vor der Dezimalstelle (
.12
) und ganze Zahlen mit einer nachgestellten Periode (12.
) abzugleichen, ohne die Eingabe einer einzelnen Periode (.
) auszuschließen :Hinzugefügt
Wickelte den Bruchteil ein
()?
, um ihn optional zu machen. Beachten Sie, dass dies Formulare wie das12.
Einschließen ausschließt, die eher so aussehen würden^\d+\\.?\d{0,2}$
.Hinzugefügt
Verwenden Sie
^\d{1,6}(\.\d{1,2})?$
diese Option , um die Wiederholung zu stoppen und den gesamten Teil des Dezimalwerts einzuschränken.quelle
-?
wie in voranstellen-?\d+(\.\d{1,2})?
. Ich habe keine Negative aufgenommen oder mit einem Dezimalpunkt begonnen, da diese nicht in der Frage des OP standen, obwohl sie sicherlich für ein allgemeineres Zahlenformat gelten. Der Kommentarthread hier bietet einige Möglichkeiten, mit ".21" umzugehen.Und da reguläre Ausdrücke schrecklich zu lesen und noch weniger zu verstehen sind, ist hier das ausführliche Äquivalent:
Sie können in den meisten Implementierungen
[0-9]
mit\d
regulären Ausdrücken (einschließlich PCRE , der am häufigsten verwendeten) ersetzen . Ich habe es so belassen, wie[0-9]
ich denke, dass es einfacher zu lesen ist.Hier ist auch das einfache Python-Skript, mit dem ich es überprüft habe:
quelle
+
nach dem ersten schließenden Paren,^([0-9]{0,3})(\.[0-9]{1,2})?$
\\.
statt sein,\.
weil.
es so aussieht, als würde es funktionieren, aber mit jedem Zeichen übereinstimmt (nicht nur mit der Dezimalstelle). Zum Beispiel kann sowohl1z23
und1.23
könnte als gültig angesehen , wenn Sie es nicht entkommenUm ein optionales Minuszeichen einzufügen und Zahlen wie
015
(die mit Oktalzahlen verwechselt werden können) nicht zuzulassen, schreiben Sie:quelle
Für Zahlen ohne Tausendertrennzeichen mag ich diesen einfachen, kompakten regulären Ausdruck:
oder, um nicht auf eine Genauigkeit von 2 beschränkt zu sein:
Letztere Streichhölzer
1
100
100
100,74
100,7
0,7
0,7
0,72
Und es stimmt nicht mit einer leeren Zeichenfolge überein (wie \ d *.? \ D * würde)
quelle
Ich benutze diese für bis zu zwei Dezimalstellen:
(^(\+|\-)(0|([1-9][0-9]*))(\.[0-9]{1,2})?$)|(^(0{0,1}|([1-9][0-9]*))(\.[0-9]{1,2})?$)
passiert:0,25
0,25
10,25
+0,25
nicht passieren:
± 25
01.25
1.
1,256
quelle
Wird Dinge wie
12.
akzeptiert machen. Dies wird nicht allgemein akzeptiert, aber wenn Sie „flexibel“ sein müssen, ist dies ein Weg. Und natürlich[0-9]
kann durch ersetzt werden\d
, aber ich denke, es ist auf diese Weise besser lesbar.quelle
Versuche dies
Es werden auch positive und negative Vorzeichen zugelassen.
quelle
Haupt Antwort ist falsch , weil es Valids
5.
oder5,
EingängeDieser Code behandelt es (aber in meinem Beispiel sind negative Zahlen verboten):
Ergebnisse sind unten:
quelle
quelle
Im Allgemeinen dh unbegrenzte Dezimalstellen:
^-?(([1-9]\d*)|0)(.0*[1-9](0*[1-9])*)?$
.quelle
Wird nicht müssen Sie das nehmen
e
ine666.76
Rechnung?Mit
quelle
Wenn ich auch meine Antwort hinzufüge, könnte jemand sie nützlich finden oder auch meine richtig sein.
quelle
Das hat bei mir funktioniert:
Gruppe 1 ist Ihre Float-Nummer und Gruppe 2 ist nur der Bruch.
quelle
Ich habe es mit meinem Projekt versucht. Dies ermöglicht auch Zahlen mit
+ | -
Vorzeichen.quelle
Chrome 56 akzeptiert diese Art von Mustern nicht (Chrome 56 erhält 11.11. Eine zusätzliche.) Mit Typennummer. Verwenden Sie Typ als Text als Fortschritt.
quelle
Dies ermöglicht eine Dezimalstelle mit Exponentiation und bis zu 2 Stellen.
Demo
quelle
1.2e-10
([0-9]+)?
ist besser geschrieben\d*
. Jetzt passt es nicht zusammen10e3
. Und OP möchte mit bis zu 2 Ziffern übereinstimmen.Die Funktion überprüft jede Dezimalzahl. Die Wetternummer hat Dezimalstellen oder nicht. Andernfalls wird "Richtige Nummer" angezeigt. "Bitte geben Sie nur Zahlen in das Textfeld" Betrag "ein. Warnmeldung wird angezeigt.
Vielen Dank... :)
quelle