Проверьте, содержит ли строка только цифры

Я хочу проверить, содержит ли string только цифры. Я использовал это:

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

if (isANumber){
    ..
}

Но понял, что это также позволяет + и -. По сути, я хочу убедиться, что input содержит ТОЛЬКО цифры и никаких других символов. Поскольку +100 и -5 оба являются числами, isNaN() - неправильный путь. Возможно, регулярное выражение - это то, что мне нужно? Какие-нибудь советы?

Ответ 1

как насчет

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

Ответ 5

Если вы хотите даже поддерживать значения float (Dot разделенные значения), вы можете использовать это выражение:

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

Ответ 6

Это то, что вы хотите

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

Ответ 7

Вот еще один интересный, читаемый способ проверить, содержит ли строка только цифры.

Этот метод работает, разбивая строку на массив с помощью оператора распространения, а затем использует метод every() чтобы проверить, все ли элементы (символы) в массиве включены в строку цифр '0123456789':

const digits_only = string => [...string].every(c => '0123456789'.includes(c));

console.log(digits_only('123')); // true
console.log(digits_only('+123')); // false
console.log(digits_only('-123')); // false
console.log(digits_only('123.')); // false
console.log(digits_only('.123')); // false
console.log(digits_only('123.0')); // false
console.log(digits_only('0.123')); // false
console.log(digits_only('Hello, world!')); // false

Ответ 8

Ну, вы можете использовать следующее регулярное выражение:

^\d+$

Ответ 9

Вот решение без использования регулярных выражений:

function onlyDigits(s) {
  for (let i = s.length - 1; i >= 0; i--) {
    const d = s.charCodeAt(i);
    if (d < 48 || d > 57) return false
  }
  return true
}

где 48 и 57 - коды символов для "0" и "9" соответственно.

Ответ 10

function isNumeric(x) {
    return parseFloat(x).toString() === x.toString();
}

Хотя это вернет false в строках с начальными или конечными нулями.

Ответ 11

c="123".match(/\D/) == null #true
c="a12".match(/\D/) == null #false

Если строка содержит только цифры, она вернет ноль