php - 用逗号匹配十进制 12,2 的正则表达式以分隔数千个组
问题描述
我想确保输入在小数点前不超过 10 位,以便匹配 DECIMAL(12,2)。
我已经尝试过:
^(?=.{0,13}$)[0-9]{1,3}(,[0-9]{3})*(\.[0-9]+)?$
但它也计算小数点后的数字,所以我要匹配的是:
1,111,111,111.00
所以它会在有或没有小数的情况下保持匹配,我尝试的只能匹配:
1,111,111,111
解决方案
您可以从字符串的开头断言,右边是一个数字的 1-10 倍,后跟一个可选的逗号,后跟一个点和 2 个数字。
然后使用模式来匹配确切的格式。
请注意,在您的模式中(\.[0-9]+)?
,末尾可以匹配超过 2 个数字。如果要匹配可选的点和 2 位数字,请使用(?:\.[0-9]{2})?
^(?=(?:\d,?){1,10}(?:\.\d{2})?$)[0-9]{1,3}(?:,[0-9]{3})*(?:\.[0-9]+)?$
推荐阅读
- javascript - 加载存储在 IPFS 上的 javascript 模块
- javascript - TypeError:无法读取反应中未定义的属性“长度”
- kubernetes - 我可以在 Google Cloud 中创建集群时指定 VM 名称吗?
- spring-boot - 禁用执行器健康端点的 webflux(反应式)安全性
- javascript - ROUND 函数 - 向上舍入到最接近的整数
- performance - 如何计算 Apache Spark 应用程序中的“效率”?
- javascript - 需要帮助调试基于机会范围字段显示/隐藏部分的 jscript 事件
- c# - 为什么“DataView”行过滤器只接受两个字符
- regex - 如何匹配以空格或逗号分隔的固定长度单词列表?
- artifactory - Artifactory 未在网页上列出工件