正则表达式以匹配大于或等于1的数字

时间:2019-05-09 17:08:46

标签: regex

我需要编写一个正则表达式来匹配大于或等于1的数字。我看过this answer

Regex: ^(?:[2-9]|\d\d\d*)$

但是,我不明白为什么在数字前有?:吗?另外,如果我的情况是在句子中间,那么我应该从正则表达式中删除以下^( )$吗?

编辑:

我需要大于或等于1的炉排,而不仅仅是大于。所以我应该使用[1-9]而不是[2-9]?

EDIT2: 我需要一个正则表达式来捕获大于或等于数字1的任何数字。 例如:2,3,4, 11, 100, 31557600或大于该数字的任何数字。

1 个答案:

答案 0 :(得分:0)

?:是仅查找图案而不捕获。您的情况似乎有所不同。同样,()用来创建一个组,同样,您不需要使用该功能,因为您的用例非常简单。

如果数字不是000(即没有多余的初始零),则可以 ^[1-9]\d*$。如果数字可以出现在句子之间,请使用\b[1-9]\d*\b查找单词边界。

基本思想是:您要匹配任何非零的非负数。 因此,数字不应以-0开头。因此,以1-9(正则表达式的{\b[1-9]部分)开头,然后是任意数字(正则表达式的\d*\b部分)。

显然,这会省略许多形式的数字:以小数形式浮动(例如23.456),以指数形式浮动数字(例如1.23e4)等等。