首页 > 解决方案 > 如何编写此正则表达式以允许数字以十进制开头而不为零?

问题描述

对于 PHP 中的权重验证,我正在使用以下正则表达式,该表达式允许带有/wo 小数的数字:

if(!preg_match("/^[0-9]+(\.[0-9]{1,2})?$/", $weight))
{
    echo "Weight is not valid.";
}

它允许以下格式的数字:

5
5.55
0.55

但不允许输入的数字是:

.5
or
.55

我知道这是因为规则/^[0-9]+

如何修改上面的正则表达式以接受数字直接以小数开头而不是零

笔记

如果我更改/^[0-9]+为,/^[\.0-9]+则该部分{1,2}不再工作。

标签: phpregex

解决方案


您可以匹配可选数字,后跟可选点,然后匹配 1-2 位数字。

^\d*\.?\d{1,2}$

模式匹配:

  • ^字符串的开始
  • \d*匹配 0+ 位数字
  • \.?匹配一个可选的.
  • \d{1,2}匹配 1-2 位数字
  • $字符串结束

正则表达式演示


推荐阅读