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


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

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

if (isANumber){
    ..
}

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

8 199

8 ответов:

как о

var isnum = /^\d+$/.test(val);
string.match(/^[0-9]+$/) != null;
String.prototype.isNumber = function(){return /^\d+$/.test(this);}
console.log("123123".isNumber()); // outputs true
console.log("+12".isNumber()); // outputs false

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

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

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

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

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

^\d+$

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

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" соответственно.

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

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