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?

1voto

anouar es-sayid Punkte 315

Wenn Sie auch Float-Werte einbeziehen möchten, können Sie folgenden Code verwenden

theValue=$('#balanceinput').val();
var isnum1 = /^\d*\.?\d+$/.test(theValue);
var isnum2 =  /^\d*\.?\d+$/.test(theValue.split("").reverse().join(""));
alert(isnum1+' '+isnum2);

Dies prüft nur auf Ziffern und durch '.' getrennte Ziffern. Der erste Test deckt Werte wie 0,1 und 0, aber auch .1 ab, Die Lösung, die ich vorschlage, besteht darin, den Wert umzukehren, so dass .1 zu 1 wird. Dann wird derselbe reguläre Ausdruck dies nicht zulassen.

Beispiel:

 theValue=3.4; //isnum1=true , isnum2=true 
theValue=.4; //isnum1=true , isnum2=false 
theValue=3.; //isnum1=flase , isnum2=true

0voto

Jacob Punkte 3312

Wenn Sie jQuery verwenden:

$.isNumeric('1234'); // true
$.isNumeric('1ab4'); // false

0voto

Appu Mistri Punkte 753

Wenn Sie Platz lassen wollen für . können Sie die folgende Regex ausprobieren.

/[^0-9.]/g

-1voto

Hier ist eine Lösung ohne Regex

const  isdigit=(value)=>{
    const val=Number(value)?true:false
    console.log(val);
    return val
}

isdigit("10")//true
isdigit("any String")//false

-2voto

Lakhani Aliraza Punkte 319
c="123".match(/\D/) == null #true
c="a12".match(/\D/) == null #false

Wenn eine Zeichenkette nur Ziffern enthält, wird null zurückgegeben.

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