You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求验证特定格式十进制数的正则表达式

正则表达式解决方案:整数部分最多18位,小数部分最多2位

没问题,这就给你一个完全符合需求的正则表达式,我会拆解每个部分帮你搞清楚逻辑:

^(\d{1,18})(\.\d{1,2})?$

规则拆解

  • ^:锚定字符串的起始位置,确保匹配从开头开始,不会漏掉前面的非法字符
  • (\d{1,18}):匹配1到18位数字的整数部分,\d代表任意数字,{1,18}严格限定了长度范围
  • (\.\d{1,2})?:可选的小数部分,?表示这个分组可以出现0次(也就是没有小数的纯整数)或1次:
    • \.:匹配小数点(必须转义,因为.在正则里是匹配任意字符的通配符)
    • \d{1,2}:匹配1到2位数字的小数部分
  • $:锚定字符串的结束位置,确保后面没有多余的非法字符

验证示例

有效匹配(符合规则)

  • 18.50:整数部分2位(≤18),小数部分2位,完全匹配
  • 5556.50:整数部分4位,小数部分2位,符合要求
  • 123456789012345678:18位纯整数,小数部分可选,也能匹配
  • 999.9:小数部分1位,同样有效

无效匹配(不符合规则)

  • 18.555:小数部分3位,超出最多2位的限制,无法匹配
  • 5879.5877:小数部分4位,不符合要求
  • 1234567890123456789:整数部分19位,超过最多18位的限制,不匹配
  • .12:缺少整数部分,无法匹配(如果需要支持这种场景,可以调整正则,不过你的示例里没有这类情况,所以默认不包含)

额外扩展(可选)

如果需要禁止整数部分的前导零(比如不想匹配0018.50这种格式,但允许0.50或单独的0),可以用这个版本:

^(0|[1-9]\d{0,17})(\.\d{1,2})?$

内容的提问来源于stack exchange,提问作者Pratik Bhavsar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:17:54