Je veux vérifier si un string
ne contient que des chiffres. J'ai utilisé ceci:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
Mais réalisé qu'il permet également +
et -
. Fondamentalement, je veux m'assurer qu'un input
contient uniquement des chiffres et aucun autre caractère. Depuis +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?
javascript
numbers
digits
patad
la source
la source
\d
c'est exactement équivalent à[0-9]
.Regular Expressions
fonctionnement/^\d*$/
à la place , si vous trouvez une chaîne vide contenant uniquement des chiffres .la source
la source
isNumber = () => /^\d+$/.test(this);
plutôt et utilisez commeconsole.log(isNumber("123123));
Si vous souhaitez même prendre en charge les valeurs flottantes (valeurs séparées par des points), vous pouvez utiliser cette expression:
la source
\d+
en\d*?
, il pourra faire correspondre 0 - 9, ainsi que des nombres tels que .333var isNumber = /^\d*\.?\d+$/.test(value)
- correspond à '3.5', '.5', '3' - ne correspond pas à '3.'Voici une autre façon intéressante et lisible de vérifier si une chaîne ne contient que des chiffres.
Cette méthode fonctionne en divisant la chaîne en un tableau à l'aide de l' opérateur d'étalement , puis utilise la
every()
méthode pour tester si tous les éléments (caractères) du tableau sont inclus dans la chaîne de chiffres'0123456789'
:la source
true
une chaîne vide''
et un tableau vide[]
, un tableau d'entiers[1, 2, 3]
(une fois qu'ils sont <10). Il est plus sujet aux bugs / abus que l'expression régulière de base/^\d+$/
je penseVoici ce que tu veux
la source
Voici une solution sans utiliser d'expressions régulières:
où 48 et 57 sont les codes de caractères pour "0" et "9", respectivement.
la source
Bien que cela revienne
false
sur les chaînes avec des zéros de début ou de fin.la source
Eh bien, vous pouvez utiliser l'expression régulière suivante:
la source
si vous souhaitez inclure des valeurs flottantes, vous pouvez également utiliser le code suivant
cela testera uniquement les chiffres et les chiffres séparés par "." le premier test couvrira des valeurs telles que 0,1 et 0 mais également 0,1, il ne permettra pas 0. donc la solution que je propose est d'inverser la valeur donc 0,1 sera 1. alors la même expression régulière ne le permettra pas.
exemple :
la source
Si une chaîne ne contient que des chiffres, elle renverra null
la source