Ich möchte überprüfen, ob a string
nur Ziffern enthält. Ich habe das benutzt:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
Aber erkannt, dass es auch erlaubt +
und -
. Grundsätzlich möchte ich sicherstellen, dass ein input
NUR Ziffern und keine anderen Zeichen enthält. Da +100
und -5
beide Zahlen sind, isNaN()
ist nicht der richtige Weg zu gehen. Vielleicht brauche ich einen regulären Ausdruck? Irgendwelche Tipps?
javascript
numbers
digits
patad
quelle
quelle
\d
ist es genau gleichbedeutend mit[0-9]
.Regular Expressions
funktioniert/^\d*$/
stattdessen , wenn Sie eine leere Zeichenfolge finden, die nur Ziffern enthält .quelle
quelle
isNumber = () => /^\d+$/.test(this);
stattdessen berücksichtigen und verwenden alsconsole.log(isNumber("123123));
Wenn Sie sogar Gleitkommawerte (durch Punkte getrennte Werte) unterstützen möchten, können Sie diesen Ausdruck verwenden:
quelle
\d+
in ändern\d*?
, kann er mit 0 - 9 sowie mit Zahlen wie .333var isNumber = /^\d*\.?\d+$/.test(value)
- entspricht '3.5', '.5', '3' - stimmt nicht mit '3' überein.Hier ist eine weitere interessante, lesbare Methode, um zu überprüfen, ob eine Zeichenfolge nur Ziffern enthält.
Dieses Verfahren funktioniert durch Aufteilen der Zeichenfolge in eine Anordnung , die unter Verwendung von Spread - Operator , und verwendet dann die
every()
Methode zu testen , ob alle Elemente (Zeichen) in dem Array enthalten sind in der Ziffernfolge'0123456789'
:quelle
true
für leere Zeichenfolgen''
und ein leeres Array[]
, ein Array von Ganzzahlen[1, 2, 3]
(sobald sie <10 sind) zurück. Es ist anfälliger für Fehler / Missbrauch als der grundlegende reguläre Ausdruck, den/^\d+$/
ich denkeDas ist, was du willst
quelle
Hier ist eine Lösung ohne reguläre Ausdrücke:
Dabei sind 48 und 57 die Zeichencodes für "0" bzw. "9".
quelle
Dies wird jedoch
false
bei Zeichenfolgen mit führenden oder nachfolgenden Nullen zurückgegeben.quelle
Nun, Sie können den folgenden regulären Ausdruck verwenden:
quelle
Wenn Sie auch Gleitkommawerte einschließen möchten, können Sie den folgenden Code verwenden
Dies prüft nur auf Ziffern und Ziffern, die durch '.' getrennt sind. Der erste Test deckt Werte wie 0,1 und 0 ab, aber auch 0,1. Er lässt keine 0 zu. Die von mir vorgeschlagene Lösung besteht darin, den Wert umzukehren, sodass 0,1 1 ist. Dann lässt der gleiche reguläre Ausdruck dies nicht zu.
Beispiel:
quelle
Wenn eine Zeichenfolge nur Ziffern enthält, wird null zurückgegeben
quelle