数字值的正则表达式模式

74
我需要一个正则表达式模式,只接受正整数。它也可以接受一个零。
我不想接受小数、负数或带有前导零的数字。
有什么建议吗?

2
前往 https://regexr.com 并试用它! - jaques-sam
5个回答

117
^(0|[1-9][0-9]*)$

1
如果格式允许(例如 1,000,000),是否应包括可选逗号? - Ben
7
不,它不应该接受逗号。 - Michael Kniskern
1
这个可以完成任务:^(0|[1-9][0-9]|[1-9][0-9]{0,2}(,[0-9]{3,3}))$ - Federico A. Ramponi
1
你能解释一下这个正则表达式吗?为什么@"^\d$"不能工作? - Developer
"^\d$" 只匹配单个数字,但是 "^\d{1,}$" 匹配一个或多个数字(PowerShell V4 语法)。 - Straff

20

"[1-9][0-9]*|0"

可以表示非负整数。为了更简单易懂,建议使用"[0-9]+"来表示正整数。


2
如果我在R中使用grepl("[0-9]+","1111a"),它会返回TRUE。 - Aman Mathur
1
@AmanMathur ^[0-9]+$ then. - Sava B.

19

这将允许以非零数字开头的小数(或整数):

^(([1-9]*)|(([1-9]*)\.([0-9]*)))$

如果您想允许以零开头的数字,可以这样做:

^(([0-9]*)|(([0-9]*)\.([0-9]*)))$

这将允许空字符串和单独的'.'。 - Artelius

5
/([1-9][0-9]*)|0/

4
/^0|[1-9]\d*$/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接