正则表达式允许所有数字,但在Javascript中仅允许0时不允许
我一直在想,如果有任何数字,而不是只有0或包含任何十进制数,如何返回true正则表达式允许所有数字,但在Javascript中仅允许0时不允许,javascript,regex,Javascript,Regex,我一直在想,如果有任何数字,而不是只有0或包含任何十进制数,如何返回true 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]*$
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]*$/
我的正则表达式一点也不好。感谢您的期待。在开始时使用负面展望
/^(?!0)\d+$/.test(value);
如果此正则表达式在开始时包含0,则它将与字符串不匹配。您已接近:
/^[1-9][0-9]*$/
/^(?!0)\d+$/.test(value);
前导的[1-9]
强制数字具有非0
的最高有效位,因此将不接受0
。之后,任何数字都可以出现
最后,不接受包含
的数字。不需要正则表达式。只需使用Number
函数或+
一元运算符将其转换为实际数,然后查看它是否小于1
且大于-1
value = +value; // it's now a number
var bool = value < 1 && value > -1; // less than 1 but greater than -1
value=+value;//现在是一个数字
var bool=value<1&&value>-1;//小于1但大于-1
此正则表达式适用于除0以外的所有数字,但00适用
/([0-9]{2,})|[1-9]/.test(value);
谢谢阿维纳什。如果我不想同时允许02怎么办?然后尝试
/^(?0)\d+$/.test(值)代码>。这将不允许0在开始时出现。您的名字是“消失拉贾”的准字谜。此外,正则表达式/^[1-9]+$/
也实现了同样的功能,并且更易于阅读。更不用说更短。但它不允许10
那么/^[1-9][0-9]*$/
就是答案。就数字而言02
与2
不是一回事吗?为什么要区分呢?是的,在数字方面,但因为作为字符串02不同于2。谢谢Stefano。这很有效。我曾经考虑过,但不明白如果[1-9],10
被[1-9][0-9]
识别(重复一次[0-9]*
),由于1
在范围1-9
内,0在范围0-9
内。它如何适用于3位数?对不起,我想用regex。我不知道谁投了反对票,但可能是因为没有regex,而问题是关于regex的。这里不需要regex,实际上有点过分了。所以发布了一个非正则表达式的解决方案。这是非常有效的答案+1