Quero verificar se a string
contém apenas dígitos. Eu usei isso:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
Mas percebi que também permite +
e -
. Basicamente, quero ter certeza de que um input
contém APENAS dígitos e nenhum outro caractere. Desde +100
e -5
são os dois números, isNaN()
não é o caminho certo a seguir. Talvez uma regexp seja o que eu preciso? Alguma dica?
javascript
numbers
digits
patad
fonte
fonte
\d
é exatamente equivalente a[0-9]
.Regular Expressions
o trabalho/^\d*$/
em vez disso , se você encontrar uma sequência vazia contendo apenas dígitos .fonte
fonte
isNumber = () => /^\d+$/.test(this);
vez, e uso comoconsole.log(isNumber("123123));
Se você deseja mesmo suportar valores flutuantes (valores separados por pontos), use esta expressão:
fonte
\d+
para\d*?
, ele poderá corresponder de 0 a 9, além de números como .333var isNumber = /^\d*\.?\d+$/.test(value)
- corresponde a '3,5', '.5', '3' - não corresponde a '3'Aqui está outra maneira interessante e legível de verificar se uma string contém apenas dígitos.
Esse método funciona dividindo a sequência em uma matriz usando o operador de dispersão e, em seguida, usa o
every()
método para testar se todos os elementos (caracteres) na matriz estão incluídos na sequência de dígitos'0123456789'
:fonte
true
para uma string vazia''
e uma matriz vazia[]
, uma matriz de números inteiros[1, 2, 3]
(quando forem <10). É mais propenso a erros / abuso do que a expressão regular básica/^\d+$/
Eu achoIsso é o que você quer
fonte
Aqui está uma solução sem usar expressões regulares:
onde 48 e 57 são os códigos de caracteres para "0" e "9", respectivamente.
fonte
Embora isso retorne
false
em strings com zeros à esquerda ou à direita.fonte
Bem, você pode usar o seguinte regex:
fonte
Se você deseja incluir valores flutuantes, também pode usar o seguinte código
isso testará apenas dígitos e dígitos separados por '.' o primeiro teste cobrirá valores como 0,1 e 0, mas também 0,1, ele não permitirá 0. Portanto, a solução que proponho é reverter o Valor para que 0,1 seja 1. então a mesma expressão regular não permitirá.
exemplo:
fonte
Se uma string contiver apenas dígitos, ela retornará nulo
fonte