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

正则表达式限制文本框输入:最多10位整数,最多2位小数

解决方案:修正后的正则表达式

没问题,我来帮你搞定这个正则的漏洞,直接上完全符合要求的写法:

^(\d{1,9}(\.\d{1,2})?|\d{10})$

规则拆解说明

这个正则通过分支匹配的思路,精准堵上了“10位整数后加小数点”的漏洞:

  • ^ 和 $ 锚定整个输入字符串,确保不会出现部分匹配的情况(比如输入里混了其他字符却没被检测到)
  • 第一个分支 \d{1,9}(\.\d{1,2})?:
    • 负责匹配1-9位整数,后面可以选择性添加小数点+1-2位小数,满足“整数不足10位时可加小数”的需求
  • 第二个分支 \d{10}:
    • 仅匹配恰好10位整数,没有任何小数点的可选分支,从根源上禁止了10位整数后加小数点的操作

验证示例

有效输入(会被匹配)

  • 999999999.22 → 匹配第一个分支(9位整数+2位小数)
  • 1234567890 → 匹配第二个分支(10位整数)
  • 123447899.1 → 匹配第一个分支(9位整数+1位小数)

无效输入(不会被匹配)

  • 99999999999 → 11位整数,超出最大长度限制
  • 9999999999.12 → 10位整数后加小数点,不符合分支规则

为什么之前的正则会踩坑?

大概率你之前用的是类似 ^\d{1,10}(\.\d{1,2})?$ 的写法——这个正则允许10位整数后面跟小数点,因为\d{1,10}包含了10位的情况,而后面的(\.\d{1,2})?又允许添加小数部分。我们的修正版把10位整数单独作为一个分支,不允许后续的小数点,就彻底解决了这个漏洞。

内容的提问来源于stack exchange,提问作者Kalpesh Koli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:46:41