检查字符串是否仅包含数字

2020/10/02 03:01 · javascript ·  · 0评论

我想检查a是否string仅包含数字。我用这个:

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

if (isANumber){
    ..
}

但意识到它也允许+-基本上,我要确保input只能包含数字,不能包含其他字符。由于+100-5都是数字,isNaN()所以不是正确的方法。也许我需要一个正则表达式?有小费吗?

怎么样

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);

这是检查字符串是否仅包含数字的另一种有趣且易读的方法。

此方法通过使用spread运算符将字符串拆分为数组来工作,然后使用该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
function isNumeric(x) {
    return parseFloat(x).toString() === x.toString();
}

虽然这将返回false带有前导或尾随零的字符串。

这就是你想要的

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

这是不使用正则表达式的解决方案:

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”的字符代码。

好了,您可以使用以下正则表达式:

^\d+$

如果要包含浮点值,也可以使用以下代码

theValue=$('#balanceinput').val();
var isnum1 = /^\d*\.?\d+$/.test(theValue);
var isnum2 =  /^\d*\.?\d+$/.test(theValue.split("").reverse().join(""));
alert(isnum1+' '+isnum2);

这将仅测试数字和以“。”分隔的数字。第一个测试将覆盖诸如0.1和0的值,但也覆盖.1,它将不允许0。因此,我建议的解决方案是将theValue反转,以使.1为1。然后相同的正则表达式将不允许它。

例如:

 theValue=3.4; //isnum1=true , isnum2=true 
theValue=.4; //isnum1=true , isnum2=false 
theValue=3.; //isnum1=flase , isnum2=true 

它检查有效数字整数或浮点数或双精度数(不是字符串)

我用过的正则表达式

简单的正则表达式

 1. ^[0-9]*[.]?[0-9]*$

正则表达式

 2. ^-?[\d.]+(?:e-?\d+)?$    

例如:仅数字

var str='1232323';
var reg=/^[0-9]*[.]?[0-9]*$/;

console.log(reg.test(str))

它允许

例如:123434

例如:.1232323

例如:12.3434434

它不允许

例如:1122212.efsffasf

例如:2323fdf34434

例如:0.3232rf3333

正则表达式

///////////////////////////////////////////////////// //////////////////

整数或浮点型或指数型字符串中的所有数字

^-?[\d.]+(?:e-?\d+)?$

例如:13123123

例如:12344.3232

例如:2323323e4

例如:0.232332

如果您需要整数和浮点数在同一验证

/^\d+\.\d+$|^\d+$/.test(val)

如果您使用jQuery:

$.isNumeric('1234'); // true
$.isNumeric('1ab4'); // false
var str='1232323a.1';
var reg=/^[0-9]*[.]?[0-9]*$/;

console.log(reg.test(str))
c="123".match(/\D/) == null #true
c="a12".match(/\D/) == null #false

如果字符串仅包含数字,则将返回null

本文地址:http://javascript.askforanswer.com/jianchazifuchuanshifoujinbaohanshuzi.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!