正则表达式允许所有数字,但在Javascript中仅允许0时不允许

正则表达式允许所有数字,但在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]*$

我一直在想,如果有任何数字,而不是只有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]*$/

我的正则表达式一点也不好。感谢您的期待。

在开始时使用负面展望

/^(?!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