php - 如何编写此正则表达式以允许数字以十进制开头而不为零?
问题描述
对于 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}
不再工作。
解决方案
您可以匹配可选数字,后跟可选点,然后匹配 1-2 位数字。
^\d*\.?\d{1,2}$
模式匹配:
^
字符串的开始\d*
匹配 0+ 位数字\.?
匹配一个可选的.
\d{1,2}
匹配 1-2 位数字$
字符串结束
推荐阅读
- php - 使用 Laravel 创建新项目时出现问题
- android - Xamrin ZXing for iPhone 不会触发扫描结果事件,但适用于 Android
- python - 从 Flask Sqlalchemy 查询返回 JSON 列表
- c++ - 如何在不使用拆分的情况下将 N DOUBLE 数字与字符串分开?
- c++ - 指向值的指针的 C++ 静态指针
- javascript - Javascript getJSON将参数存储为函数范围问题之外的变量
- reactjs - 修复 NPM 重复问题,两个包依赖相同的 peerDependency 但在不同的版本级别与 CRA React
- javascript - 如何访问类型脚本中的嵌入式输入字段
- continuous-integration - Ionic Appflow:部署到 Google Play 只创建 Draft,如何直接发布?
- binary - 输出顺序相反