2009-11-22 24 views
159

ich überprüfen möchten, ob ein String nur Ziffern enthält. Ich benutzte dieses:Überprüfen Sie, ob Zeichenfolge enthält nur Ziffern

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

if (isANumber){ 
    .. 
} 

.. aber erkannte, dass es auch + und - erlaubt. Grundsätzlich möchte ich sicherstellen, dass die Eingabe NUR Ziffern und keine anderen Buchstaben enthält. Da +100 und -5 beide Zahlen sind, isNaN, ist nicht der richtige Weg. Vielleicht ist ein Regexp was ich brauche? Irgendwelche Tipps?

Antwort

348

wie etwa

var isnum = /^\d+$/.test(val); 
+4

Werfen Sie einen Blick auf diesen Beitrag ... http://stackoverflow.com/questions/18082/validate -Zahlen-in-Javascript-IsNumeric – Jorge

+10

sollten Sie verwenden [0-9] anstelle von \ d mehr klar zu sein. \ d ist für jede Art von Ziffern geeignet, auch für solche aus anderen Sprachen, obwohl ich glaube, dass JavaScript eine Ausnahme ist, wo \ d nur 0-9 ist. – mukunda

+0

Das ist großartig! Ich bin neugierig, bezieht sich nicht auf Ziffer, die dezimal ist? – dewwwald

2

Nun, können Sie die folgende regex verwenden:

^\d+$ 
40
string.match(/^[0-9]+$/) != null; 
9
String.prototype.isNumber = function(){return /^\d+$/.test(this);} 
console.log("123123".isNumber()); // outputs true 
console.log("+12".isNumber()); // outputs false 
4

Dies ist, was Sie wollen

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

Wenn Sie wollen auch für Float-Werte unterstützen (Dot-Werte getrennt), dann können Sie diesen Ausdruck verwenden:

var isNumber = /^\d+\.\d+$/.test(value); 
+0

jedoch, wenn Sie einen Schwimmer nicht eher verwenden int es falsch zurück vielleicht mit „?“ nach "." löste das. Ich schlage vor, diese /^\d+[\.,\,]?\d+$/.test(value) sowohl Komma und Punkt dezimal zu ermöglichen (später kann vielleicht Komma umwandeln zu Punkt) – Lucke

+0

@Lucke, die Regex nur vorgeschlagen werden der Lage sein, Zahlen mit einer Dezimalstelle zu finden oder höher als 9. Wenn Sie die erste '\ d + ändern' auf '\ d *', wird es in der Lage sein, entsprechen 0 - sowie Zahlen 9, wie 0,333 –

Verwandte Themen