Dezimalzahlen in JavaScript validieren - IsNumeric()
Was ist der sauberste und effektivste Weg, Dezimalzahlen in JavaScript zu validieren?
Bonuspunkte für:
- Klarheit. Die Lösung sollte sauber und einfach sein.
- Plattformübergreifend.
Testfälle:
01. IsNumeric('-1') => true
02. IsNumeric('-1.5') => true
03. IsNumeric('0') => true
04. IsNumeric('0.42') => true
05. IsNumeric('.42') => true
06. IsNumeric('99,999') => false
07. IsNumeric('0x89f') => false
08. IsNumeric('#abcdef') => false
09. IsNumeric('1.2.3') => false
10. IsNumeric('') => false
11. IsNumeric('blah') => false
2316
3
Dieser Weg scheint gut zu funktionieren:
Und um es zu testen:
Ich habe diese Regex von http://www.codetoad.com/javascript/isnumeric.asp übernommen. Erläuterung:
Ich'möchte folgendes hinzufügen:
Positive Hex-Zahlen beginnen mit
0x
und negative Hex-Zahlen beginnen mit-0x
. Positive Okt-Zahlen beginnen mit0
und negative Okt-Zahlen beginnen mit-0
. Dieser berücksichtigt das meiste von dem, was bereits erwähnt wurde, schließt aber Hex- und Oktalzahlen, negative wissenschaftliche Zahlen und Infinity ein und hat dezimale wissenschaftliche Zahlen entfernt (4e3.2
ist nicht gültig).Dazu noch ein paar Tests:
Ich habe das hier gefunden:
Die Lösung umfasst: