Php 什么';这是只用于正整数的正则表达式吗?(不允许为零)

Php 什么';这是只用于正整数的正则表达式吗?(不允许为零),php,regex,validation,Php,Regex,Validation,只有正整数的正则表达式是什么?(不允许为零) 我只能得到数字的正则表达式,它是^\d+$。我一直试图在网上寻找一个,但已经过了一个小时,所以我决定在Stack Overflow上发布它 匹配项: 1 || 2 || 444 || 9000 || 012 非匹配项: 9.2 || -90 这显然是: [1-9]\d* (一到九位数字后接零或多个数字。) 当然,这将排除0190之类的内容。可能是您正在寻找的^[1-9]+$模式。它将匹配1245,2253等,但不匹配1003。或0124。如果您

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

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

匹配项:

1 || 2 || 444 || 9000 || 012
非匹配项:

9.2 || -90
这显然是:

[1-9]\d*
(一到九位数字后接零或多个数字。)
当然,这将排除0190之类的内容。

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

在php中,您可以使用

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

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

/^\+?([1-9]|0.)[0-9\.]*$/
这种模式可能会对您有所帮助,但我认为您必须具备编程语言技能才能进行算术检查。例如在php中。“
$is_positive=$input>0
”是的,很简单:)

试试这个

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

我知道你要求一个正则表达式,但你可以考虑

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

这里有一个允许0到100,但不允许01


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

您尝试使用正则表达式进行算术比较有什么特别的原因吗?你知道你在用猎枪杀死一只蜘蛛,对吧?不,我要用它来计算数量,我不希望用户允许0,-1,2.3。只使用正整数。使用
parseInt()
或其他等效工具。@ghoti似乎是用瑞士刀剪线的。@ghoti想法不错,但
是数字的
允许使用负数、小数等。谢谢您,先生。是的,我只是想在将值发送到数据库之前,使用正则表达式验证的用户输入。再次谢谢,先生。也谢谢你,先生,但我有一个错误。php中没有结尾分隔符“^”。我该怎么修呢。再次感谢您,先生。您没有指定它的名称。在php中使用//作为delimeter,因此模式将是
/^[1-9]\d*$/
谢谢您,先生。正是我要找的。@TimPietzcker,
*?
本来是要成为一个“”,因为
*
本身就是贪婪的。我不认为像
0*
这样简单的东西需要它(或有任何区别),但它仍然是有效的符号。它是有效的,但完全没有用,而且速度较慢,因为它会导致很多不必要的回溯。