451 votes

Vérifier si la chaîne ne contient que des chiffres

Je veux vérifier si un string ne contient que des chiffres. J'ai utilisé ceci :

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

if (isANumber){
    ..
}

Mais j'ai réalisé que cela permet aussi + y - . En gros, je veux m'assurer qu'une input ne contient QUE des chiffres et aucun autre caractère. Puisque +100 y -5 sont tous deux des nombres, isNaN() n'est pas la bonne façon de procéder. Peut-être qu'un regexp est ce dont j'ai besoin ? Des conseils ?

921voto

Scott Evernden Points 17858

Comment

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

1 votes

C'est génial ! Je suis curieux de savoir si \d ne fait pas référence à un chiffre qui est décimal ?

13 votes

@dewwwald : Certains langages l'implémentent différemment, mais en JavaScript, \d es exactement équivalent à [0-9] .

2 votes

Ici vous pouvez trouver de la documentation sur la façon dont Regular Expressions travail

87voto

Jason S Points 58434
string.match(/^[0-9]+$/) != null;

21voto

balupton Points 17805
String.prototype.isNumber = function(){return /^\d+$/.test(this);}
console.log("123123".isNumber()); // outputs true
console.log("+12".isNumber()); // outputs false

8 votes

Il est considéré comme une mauvaise pratique en Javascript de modifier les prototypes d'objets intégrés (principe de moindre surprise et conflits potentiels dans les futures versions de l'ECMA). isNumber = () => /^\d+$/.test(this); à la place, et l'utiliser comme console.log(isNumber("123123));

6 votes

Pour information, en 2009, lorsque cette réponse a été publiée, elle n'était pas encore considérée comme une mauvaise pratique. Plusieurs concurrents de jQuery qui existaient alors, avant que jQuery ne s'impose, pratiquaient tous les extensions de prototype.

11voto

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

3voto

Joey Points 148544

Eh bien, vous pouvez utiliser la regex suivante :

^\d+$

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X