正则验证数字或小数,绝对有挑战

Mrsum
  • 609

1.只能使用正则来验证
2.数字为小数的时候需要验证保留两位小数
3.不能是0,0.00
4.可以是0.10,0.11,1,0.01这样的数字类型

回复
阅读 2.6k
6 个回答

你这个是面试题吧,用Math.round不就搞定了

^[-+]?\d+(\.\d{0,1}[1-9])?$

Update
^[-+]?([1-9]+)|(\d+\.(\d{0,1}[1-9])|(\[1-9][0-9]))$

^(([1-9]+)|(\d+\.((\d{0,1}[1-9])|([1-9][0-9]))))$

0 - false
0.01 - true
0.00 - false
0.10 - falsetrue

Update #2

Starts with a number except 0.

^((^[1-9][0-9]*)|((^[1-9][0-9]*)\.((\d{0,1}[1-9])|([1-9][0-9]))))$

02.01 - false
2.01 - true
2.00 - false
2.10 - true

/^([0-9]+.[0-9]{0,2}|[1-9])*$/

/^[+-]?\d+(\.\d{2})?$/

or

/^[+-]?\d+(?:\.\d{2})?$/

var arr = [0, 0.00, 0.10, 0.11, 1, 0.01, -0, -0.00, -0.10, +0.11, -1, -0.01];
var reg = /^[+-]?([1-9]{1}\d?|[1-9]+.\d{2}|0.[1-9]{1}\d{1}|0.0[1-9]{1})$/;
for (let i = 0, len = arr.length; i < len; i++) {
    console.log(arr[i], reg.test(arr[i]));
}
你知道吗?

宣传栏