只有正整数的正则表达式是什么? (不允许零)
我能够获得仅^\d+$
的数字的正则表达式。我一直试图在网上寻找一个,但已经有一个小时,所以我决定在Stack Overflow上发布它。
匹配:
1 || 2 || 444 || 9000 || 012
非匹配:
9.2 || -90
答案 0 :(得分:7)
^0*[1-9]\d*$
将匹配除零之外的所有数字。
答案 1 :(得分:6)
可能您正在寻找^[1-9]+$
模式。它会匹配1245
,2253
等。但不是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)$