PHP如何利用正则匹配让用户禁止输入负数?

发布于 2022-09-11 16:21:14 字数 179 浏览 24 评论 0

$matches = -50;
$res = preg_match('/[1-9]{1,10}/',$matches);
print_r($res);  //输出1

如上面的代码所示,我并没有在正则匹配 - 号,但依然能输入负数,这是怎么回事呢?
我该如何用正则表达式禁止负数的输入。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

美胚控场 2022-09-18 16:21:14

能不用正则 就不用不正则。
如果非要用 那就

^[0-9]+$
轮廓§ 2022-09-18 16:21:14

/[1-9]{1,10}/匹配到的是5, 也就是说有一个5就会返回true

clipboard.png

要想匹配完整,加上^$就行了

$matches = -50;
$res = preg_match('/^[1-9]{1,10}$/',$matches);
print_r($res);  //输出0

如果只是想用正则判断是否是负数,可以这样

$matches = -50;
$res = preg_match('/-/',$matches);
print_r($res);//输出1, 表示是负数

如果需求是判断是否为非负数,也可以这样子

$matches = -50;
if(is_numeric($matches) && $matches >= 0) {
    print_r('非负数');
} else {
    print_r('负数或非数字');
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文