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

求符合特定数字格式的正则表达式(含格式校验规则)

符合要求的正则表达式解决方案

需求规则梳理

有效格式规则

  • 整数:仅允许0,或无前导零的正整数(如25、100)
  • 小数:
    • 整数部分为0或无前导零的正整数
    • 小数部分至少包含一个非零数字,且结尾不能为零(如15.31、0.123、25.01)
  • 分数形式:
    • 两侧均为有效整数/小数,用单个斜杠分隔(如25/25、0/0、25.5/25)
    • 若带百分号,则两侧必须同时带%(如25%/25%、0.125%/0.125%)

无效格式规则

  • 连续多个零(如0000)
  • 小数部分全为零或结尾为零(如0.0、25.00、25.0500)
  • 含前导零的整数(如02)
  • 单侧带百分号的分数(如25%/25)
  • 连续斜杠(如25//25)

最终正则表达式

/^(?:0|[1-9]\d*|0\.\d*[1-9]|[1-9]\d*\.\d*[1-9])(?:\/(?:0|[1-9]\d*|0\.\d*[1-9]|[1-9]\d*\.\d*[1-9]))?$|^(?:(?:0|[1-9]\d*|0\.\d*[1-9]|[1-9]\d*\.\d*[1-9])%\/(?:0|[1-9]\d*|0\.\d*[1-9]|[1-9]\d*\.\d*[1-9])%)$/gm

正则表达式详细解释

第一分支:单个有效数字或不带百分号的分数

  • ^(?:0|[1-9]\d*|0\.\d*[1-9]|[1-9]\d*\.\d*[1-9]):匹配单个有效数字
    • 0:匹配单独的零
    • [1-9]\d*:匹配无前导零的正整数
    • 0\.\d*[1-9]:匹配整数部分为0的有效小数(小数部分结尾非零)
    • [1-9]\d*\.\d*[1-9]:匹配整数部分非零开头的有效小数(小数部分结尾非零)
  • (?:\/(?:0|[1-9]\d*|0\.\d*[1-9]|[1-9]\d*\.\d*[1-9]))?$:可选的分数后缀,匹配单个斜杠加另一个有效数字,确保仅出现一次斜杠

第二分支:带百分号的分数

  • ^(?:(?:0|[1-9]\d*|0\.\d*[1-9]|[1-9]\d*\.\d*[1-9])%\/(?:0|[1-9]\d*|0\.\d*[1-9]|[1-9]\d*\.\d*[1-9])%)$:强制要求两侧有效数字都带%,且用单个斜杠分隔,避免单侧带%的无效情况

测试验证

  • 支持所有有效格式,包括之前正则不兼容的0.2%/0.1%、0.123/0.123
  • 所有无效格式均无法匹配

内容的提问来源于stack exchange,提问作者Pedro Martins

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 10:45:32