Проверьте, содержит ли строка только цифры
-
21-09-2019 - |
Вопрос
Я хочу проверить, есть ли string
содержит только цифры.Я использовал это:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
Но понял, что это также позволяет +
и -
.По сути, я хочу убедиться, что input
содержит ТОЛЬКО цифры и никаких других символов.С +100
и -5
оба числа, isNaN()
это не правильный путь.Возможно, мне нужно регулярное выражение?Какие-нибудь советы?
Решение
как насчет
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
Если вы хотите даже поддерживать значения с плавающей запятой (значения, разделенные точкой), вы можете использовать это выражение:
var isNumber = /^\d+\.\d+$/.test(value);
Это то, что ты хочешь
function isANumber(str){
return !/\D/.test(str);
}
Вот еще один интересный и понятный способ проверить, содержит ли строка только цифры.
Этот метод работает путем разделения строки на массив с помощью оператор распространения, а затем использует 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
Ну, вы можете использовать следующее регулярное выражение:
^\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
в строках с ведущими или конечными нулями.
c="123".match(/\D/) == null #true
c="a12".match(/\D/) == null #false
Если строка содержит только цифры, она вернет ноль