Verifique se Sring é um número em JavaScript

Hiten Kanwar 12 outubro 2023
  1. Use a Função isNaN() para Verificar se uma Determinada String é um Número ou Não em JavaScript
  2. Use o Operador + para Verificar se uma Determinada String é um Número ou Não em JavaScript
  3. Use a Função parseInt() para Verificar se uma Determinada String é um Número ou Não em JavaScript
  4. Use a Função Number() para Verificar se uma Determinada String é um Número ou Não em JavaScript
  5. Use Expressões Regulares para Verificar se uma Determinada String é um Número ou Não em JavaScript
Verifique se Sring é um número em JavaScript

Número na linguagem de programação é o tipo de dado que denota inteiros, floats, etc. Strings representam todos os caracteres, ao invés de apenas valores numéricos. Strings podem conter valores numéricos.

Neste artigo, iremos verificar se uma determinada string é um número ou não.

Use a Função isNaN() para Verificar se uma Determinada String é um Número ou Não em JavaScript

A função isNaN() significa is Not-a-Number. É uma função embutida do JavaScript usada para determinar se um determinado valor não é um valor numérico, o que inclui tanto números reais quanto strings numéricas.

A função isNaN() retorna true se o valor não for um número e false se for um número ou puder ser convertido em um número válido.

Aqui está a sintaxe básica da função isNaN():

isNaN(value)
  • valor: O valor que você quer verificar se é um número. Isso pode ser uma variável, constante ou uma expressão.

Exemplo:

console.log(isNaN('195'))
console.log(isNaN('boo'))
console.log(isNaN('100px'))

Saída:

false 
true
true

Se quisermos criar uma função que retorne true para um valor válido, sempre podemos fazer isso criando uma função que nega a saída da função isNaN().

function isNum(val) {
  return !isNaN(val)
}
console.log(isNum('aaa'));
console.log(isNum('13579'));
console.log(isNum('-13'));

Saída:

false
true
true

Agora essa função chamada isNum() retornará true para um valor numérico válido.

Manipulando Strings Numéricas com Decimais

A função isNaN() é versátil e pode manipular strings numéricas com pontos decimais também. Por exemplo:

const str = '3.14';  // A string que queremos verificar
const éNumérico = isNaN(str);

Se(éNumérico) {
  console.log(`${str} NÃO é um número.`);
}
else {
  console.log(`${str} é um número.`);
}

A saída identificará corretamente '3.14' como um número:

3.14 is a number.

Use o Operador + para Verificar se uma Determinada String é um Número ou Não em JavaScript

O operador + em JavaScript serve para dois propósitos: pode ser usado para adição aritmética e como operador unário para coerção de tipos.

Quando aplicado a strings, o operador + tenta convertê-las em valores numéricos. Se a string puder ser convertida com sucesso em um número, o resultado será um valor numérico válido; caso contrário, resultará em NaN (Not-a-Number).

Por exemplo,

console.log(+'195')
console.log(+'boo')

Saída:

195
NaN

Use a Função parseInt() para Verificar se uma Determinada String é um Número ou Não em JavaScript

O método parseInt() no JavaScript é usado para analisar uma string e convertê-la em um número inteiro (um número inteiro). Ele lê a string da esquerda para a direita até encontrar um caractere que não seja parte válida de um número inteiro e então para de analisar.

Aqui está a sintaxe básica do uso de parseInt():

parseInt(string[, radix]);
  • string: A string a ser analisada e convertida em um número inteiro.
  • base (opcional): Um número entre 2 e 36 que representa a base do sistema de numeração usado na string. Esse parâmetro é opcional e, se omitido, o JavaScript assume base 10 (decimal).

Ele retorna NaN quando não consegue extrair números da string.

Por exemplo,

console.log(parseInt('195'))
console.log(parseInt('boo'))

Saída:

195
NaN

Manipulando Strings Numéricas com Base

O método parseInt() também permite especificar a base (base) do sistema de numeração usado na string. Por exemplo, você pode analisar números binários (base 2), octais (base 8) ou hexadecimal (base 16).

Aqui está um exemplo de análise de uma string hexadecimal:

const stringHexadecimal = '1A';                        // String hexadecimal
const valorInteiro = parseInt(stringHexadecimal, 16);  // Especifica base 16

Se(isNaN(valorInteiro)) {
  console.log(`${stringHexadecimal} NÃO é um número.`);
}
else {
  console.log(`${stringHexadecimal} é um número.`);
}

Neste caso, a saída identificará corretamente '1A' como um número hexadecimal:

1A is a number.

Use a Função Number() para Verificar se uma Determinada String é um Número ou Não em JavaScript

A função Number() converte o argumento em um número que representa o valor do objeto. Se não conseguir converter o valor em um número, ela retorna NaN.

Podemos usá-la também com strings para verificar se uma determinada string é um número ou não.

Por exemplo,

console.log(Number('195'))
console.log(Number('boo'))

Saída:

195
NaN

Use Expressões Regulares para Verificar se uma Determinada String é um Número ou Não em JavaScript

Uma expressão regular, frequentemente referida como regex, é um padrão que especifica um conjunto de strings. Ela pode ser usada para encontrar padrões dentro de strings, tornando-se uma ferramenta versátil para tarefas como validação de strings.

Em JavaScript, você pode criar expressões regulares usando o construtor RegExp ou usando a notação literal da regex entre barras, como /padrão/.

Podemos usar esses padrões para verificar se uma string contém um número ou não.

Primeiro, precisamos definir um padrão de expressão regular que corresponda a valores numéricos. Podemos criar um padrão simples que corresponda a inteiros positivos e negativos, bem como a números de ponto flutuante:

const numberPattern = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;

Aqui está o que esse padrão faz:

  • ^: Afirma o início da string.
  • [-+]?: Corresponde a um sinal positivo ou negativo opcional.
  • [0-9]*: Corresponde a zero ou mais dígitos antes do ponto decimal.
  • \.?: Corresponde a um ponto decimal opcional.
  • [0-9]+: Corresponde a um ou mais dígitos após o ponto decimal.
  • ([eE][-+]?[0-9]+)?: Corresponde a uma parte exponencial opcional, como e-3 ou E+4.

Agora, aplique o método test() do padrão de expressão regular à string. O método test() retorna true se a string corresponder ao padrão e false caso contrário:

const isNumber = numberPattern.test(str);

Por exemplo,

function isNumeric(val) {
  return /^-?\d+$/.test(val);
}

console.log(isNumeric('aaa'));
console.log(isNumeric('13579'));
console.log(isNumeric('-13'));

Saída:

false
true
true

Artigo relacionado - JavaScript String