532 Stimmen

Prüfen, ob String nur Ziffern enthält

Ich möchte prüfen, ob ein string enthält nur Ziffern. Ich habe dies verwendet:

var isANumber = isNaN(theValue) === false;

if (isANumber){
    ..
}

Aber ich habe erkannt, dass es auch erlaubt + y - . Grundsätzlich möchte ich sicherstellen, dass ein input enthält NUR Ziffern und keine anderen Zeichen. Da +100 y -5 sind beides Zahlen, isNaN() ist nicht der richtige Weg. Vielleicht ist eine Regexp, was ich brauche? Irgendwelche Tipps?

11voto

Saranga Jayaruwan Punkte 109

Das ist es, was Sie wollen

function isANumber(str){
  return !/\D/.test(str);
}

11voto

SC1000 Punkte 680

Hier ist eine Lösung ohne Verwendung regulärer Ausdrücke:

function onlyDigits(s) {
  for (let i = s.length - 1; i >= 0; i--) {
    const d = s.charCodeAt(i);
    if (d < 48 || d > 57) return false
  }
  return true
}

wobei 48 und 57 die Zeichencodes für "0" bzw. "9" sind.

8voto

Leandro Menezes Punkte 43

Für den Fall, dass Sie Integer und Float bei der gleichen Validierung benötigen

/^\d+\.\d+$|^\d+$/.test(val)

5voto

function isNumeric(x) {
    return parseFloat(x).toString() === x.toString();
}

Auch wenn dies wieder false bei Zeichenketten mit führenden oder nachgestellten Nullen.

4voto

Joey Punkte 329386

Nun, Sie können die folgende Regex verwenden:

^\d+$

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X