只有正数的正则表达式是什么? (不允许为零)只有正整数的正则表达式是什么? (不允许为零)
我能得到的只有数字是^\d+$
正则表达式。我一直在寻找一个在线,但它已经一个小时了,所以我决定在Stack Overflow上发布它。
比赛:
1 || 2 || 444 || 9000 || 012
不匹配:
9.2 || -90
只有正数的正则表达式是什么? (不允许为零)只有正整数的正则表达式是什么? (不允许为零)
我能得到的只有数字是^\d+$
正则表达式。我一直在寻找一个在线,但它已经一个小时了,所以我决定在Stack Overflow上发布它。
比赛:
1 || 2 || 444 || 9000 || 012
不匹配:
9.2 || -90
可能是你正在寻找^[1-9]+$
模式。它将匹配1245
,2253
等,但不是1003
。或0124
。如果你想匹配第三个号码(1003
)以及使用^[1-9]\d*$
模式。
在PHP中你会使用
preg_match('/^[1-9]\d*$/', $subject, $matches)
也谢谢您,先生,但我得到一个错误。在php中没有结尾分隔符'^'。我如何解决它。先生,再次谢谢你。 – 2012-03-05 12:01:45
您没有指定[tag:php]。在PHP中使用//作为分隔符,所以模式将为'/^[1-9] \ d * $ /' – 2012-03-05 12:06:20
谢谢先生。正是我在找什么。 – 2012-03-06 01:42:47
这显然是:
[1-9]\d*
(后跟零个或多个数字之一至九人。) 这排除0190之类的东西,当然。
^0*[1-9]\d*$
将匹配不包括零所有数字。
应该删除'?'。 – 2012-03-05 13:17:09
@TimPietzcker,'*?'旨在成为“[懒惰星](http://en.wikipedia.org/wiki/Regular_expression#Lazy_quantification)”,因为'*'本身就是贪婪的。我认为它不是必需的(或者有任何区别),只要像'0 *'这样简单的东西,但它仍然是有效的符号。 – ghoti 2012-03-05 15:37:16
这是有效的,但完全无用,速度较慢,因为它会导致大量不必要的回溯。 – 2012-03-05 16:00:27
/^\+?([1-9]|0.)[0-9\.]*$/
这种模式可能会帮助你,但我认为你必须使用你的编程语言做算术检查。例如在PHP中。 “$is_positive = $input > 0
”是的,它是那么容易:)
谢谢先生。是的,我只是想使用正则表达式来验证用户输入,然后再将值发送到数据库。先生,再次感谢。 – 2012-03-05 11:57:19
试试这个
[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)$
是否有你想要做一个特别的理由n使用正则表达式进行算术比较?你知道你用霰弹枪杀死一只蜘蛛,对吧? – ghoti 2012-03-05 11:40:56
不,我打算将它用于数量计数,我不希望用户允许0,-1,2.3。只是积极的整数。 – 2012-03-05 11:46:52
使用'parseInt()'或一些等价物.. – 2012-03-05 11:52:02