I want to check if a string
contains only digits. I used this:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
But realized that it also allows +
and -
. Basically, I want to make sure an input
contains ONLY digits and no other characters. Since +100
and -5
are both numbers, isNaN()
is not the right way to go. Perhaps a regexp is what I need? Any tips?
怎么样
let 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);
Here's another interesting, readable way to check if a string contains only digits.
This method works by splitting the string into an array using the spread operator , and then uses the every()
method to test whether all elements (characters) in the array are included in the string of digits '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
This is what you want
function isANumber(str){
return !/\D/.test(str);
}
function isNumeric(x) {
return parseFloat(x).toString() === x.toString();
}
Though this will return false
on strings with leading or trailing zeroes.
Here is a solution without using regular expressions:
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
}
where 48 and 57 are the char codes for "0" and "9", respectively.
好吧,您可以使用以下正则表达式:
^\d+$
如果您需要在同一验证中使用整数和浮点数
/^\\d+\\.\\d+$|^\\d+$/.test(val)
if you want to include float values also you can use the following code
theValue=$('#balanceinput').val();
var isnum1 = /^\d*\.?\d+$/.test(theValue);
var isnum2 = /^\d*\.?\d+$/.test(theValue.split("").reverse().join(""));
alert(isnum1+' '+isnum2);
this will test for only digits and digits separated with '.' the first test will cover values such as 0.1 and 0 but also .1 , it will not allow 0. so the solution that I propose is to reverse theValue so .1 will be 1. then the same regular expression will not allow it .
example :
theValue=3.4; //isnum1=true , isnum2=true
theValue=.4; //isnum1=true , isnum2=false
theValue=3.; //isnum1=flase , isnum2=true
I want to check if a string
contains only digits. I used this:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
But realized that it also allows +
and -
. Basically, I want to make sure an input
contains ONLY digits and no other characters. Since +100
and -5
are both numbers, isNaN()
is not the right way to go. Perhaps a regexp is what I need? Any tips?
If you use jQuery:
$.isNumeric('1234'); // true
$.isNumeric('1ab4'); // false
I want to check if a string
contains only digits. I used this:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
But realized that it also allows +
and -
. Basically, I want to make sure an input
contains ONLY digits and no other characters. Since +100
and -5
are both numbers, isNaN()
is not the right way to go. Perhaps a regexp is what I need? Any tips?
const isdigit=(value)=>{
const val=Number(value)?true:false
console.log(val);
return val
}
isdigit("10")//true
isdigit("any String")//false
If you want to leave room for .
you can try the below regex.
/[^0-9.]/g
c="123".match(/\D/) == null #true
c="a12".match(/\D/) == null #false
If a string contains only digits it will return null
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.