2009-11-22 16 views
159

Je souhaite vérifier si une chaîne contient uniquement des chiffres. J'ai utilisé ceci:Vérifier si la chaîne contient uniquement des chiffres

.. mais réalisé qu'il permet également + et -. Fondamentalement je veux m'assurer que l'entrée contient SEULEMENT des chiffres et aucune autre lettre. Puisque +100 et -5 sont les deux nombres, isNaN, n'est pas la bonne façon de procéder. Peut-être qu'une expression rationnelle est ce dont j'ai besoin? Des conseils?

Répondre

348

que diriez-vous

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

Jetez un oeil à ce poste ... http://stackoverflow.com/questions/18082/validate -numbers-in-javascript-isnumeric – Jorge

+10

Vous devriez utiliser [0-9] au lieu de \ d pour être plus clair. \ d est destiné à correspondre à n'importe quel type de chiffre, y compris ceux d'autres langues, bien que je pense que JavaScript est une exception où \ d est seulement 0-9. – mukunda

+0

C'est génial! Je suis curieux ne pas se référer à un chiffre qui est décimal? – dewwwald

2

Eh bien, vous pouvez utiliser les expressions régulières suivantes:

^\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

C'est ce que vous voulez

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

Si vous voulez soutenir même pour les valeurs flottantes (séparés par des points de valeurs), vous pouvez utiliser cette expression:

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

Cependant, si vous n'utilisez pas un float plutôt que int, il retournera false en utilisant peut-être "?" après ". \" résolu cela. Je suggère ceci/^\d+[\.,\,+$/.test(value) pour permettre à la fois la virgule et le point décimal (plus tard peut-être peut transformer la virgule au point) – Lucke

+0

@Lucke, l'expression rationnelle que vous avez suggérée sera seulement être capable de trouver des nombres avec un nombre décimal ou supérieur à 9. Si vous changez le premier '\ d +' à '\ d *?', il sera capable de correspondre à 0 - 9, ainsi que des nombres tels que .333 –

Questions connexes