正则表达式允许所有数字,但如果在Javascript中只有0则不行

时间:2015-02-26 14:57:59

标签: javascript regex

我一直试图弄清楚如果有任何数字如何返回true,但如果只有0或包含任何小数.

1    //true
23   //true
10   //true
0.2  //false
10.2 //false
02   //false
0    //false

到目前为止我已经制作了这个正则表达式并且它工作正常但它也允许0我不想要

/^[0-9]+$/.test(value);

我试图搜索我的最好并尝试这些正则表达式到目前为止但失败了

/^[0]*[0-9]+$/
/^[0-9]+[^0]*$/

我根本不擅长正则表达式。谢谢你的期待。

5 个答案:

答案 0 :(得分:10)

你很亲密:/^[1-9][0-9]*$/

前导[1-9]强制数字的最高位数不是0,因此不会接受0。在那之后,任何数字都可以来。

最后,不接受包含.的数字。

答案 1 :(得分:2)

在开始时使用否定前瞻。

/^(?!0)\d+$/.test(value);

如果字符串在开头包含0,则该正则表达式将不匹配。

答案 2 :(得分:1)

不需要正则表达式。只需使用Number函数或+一元运算符将其转换为实际数字,然后查看它是否小于1且大于-1

value = +value; // it's now a number
var bool = value < 1 && value > -1;  // less than 1 but greater than -1

答案 3 :(得分:0)

function validateNumber(yournumber){
return (parseFloat(yournumber ) == parseInt(yournumber) &&  parseInt(yournumber))
}

答案 4 :(得分:0)

此正则表达式适用于除0以外的所有数字,但00将起作用

/([0-9]{2,})|[1-9]/.test(value);