只有正整数的正则表达式是什么? (不允许零)

时间:2012-03-05 11:35:11

标签: php regex validation

只有正整数的正则表达式是什么? (不允许零)

我能够获得仅^\d+$的数字的正则表达式。我一直试图在网上寻找一个,但已经有一个小时,所以我决定在Stack Overflow上发布它。

匹配:

1 || 2 || 444 || 9000 || 012

非匹配:

9.2 || -90

7 个答案:

答案 0 :(得分:7)

^0*[1-9]\d*$将匹配除零之外的所有数字。

答案 1 :(得分:6)

可能您正在寻找^[1-9]+$模式。它会匹配12452253等。但不是1003。或0124。如果您想匹配第三个数字(1003)以及使用^[1-9]\d*$模式。

在php中你会使用

preg_match('/^[1-9]\d*$/', $subject, $matches)

答案 2 :(得分:3)

这显然是:

[1-9]\d*

(一到九后跟零或更多位数。) 当然,这会排除像0190这样的东西。

答案 3 :(得分:2)

我知道你要求正则表达式,但你可能会考虑

$opts = array(
    'options' => array(
        'min_range' => 1,
        'max_range' => PHP_INT_MAX
    )
);
$n = filter_var($input, FILTER_VALIDATE_INT, $opts);

答案 4 :(得分:1)

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

这种模式可能对你有所帮助,但我认为你必须具备编程语言技能才能进行算术检查。例如在php中。 “$is_positive = $input > 0”是的,这很容易:)

答案 5 :(得分:1)

试试这个

[1-9]\d*|[0]*[1-9]\d*

答案 6 :(得分:0)

这是一个允许0到100但不是01

^((([0]$)|[1-9][0-9]{0,1})|100)$