You need to enable JavaScript to run this app. 编写允许最多4位整数、最多4位小数的正则表达式及现有方案缺陷修正
优惠活动
大模型
产品
解决方案
定价
更多

编写允许最多4位整数、最多4位小数的正则表达式及现有方案缺陷修正

适配需求的正则修正方案

原有写法的核心缺陷

你之前使用的正则^[0-9]{0,4}(?:.[0-9]{0,4}$)有两个致命问题,直接导致纯整数输入时长度校验完全失效:

  1. 未对小数点做转义处理。正则语法中不转义的.属于通配元字符,可以匹配任意单个字符,而非仅匹配文本中的小数点。在匹配纯数字输入时,超出4位的第5位数字会被这个通配符直接吃掉,被判定为合法内容。
  2. 将行尾结束锚$封装在了可选的非捕获组内部。当输入不带小数点时,整个非捕获组如果不被触发,行尾校验逻辑就完全不生效,无法对字符串整体长度做约束。

最终可用的正则表达式

^(?:[0-9]{1,4}|[0-9]{1,4}\.[0-9]{1,4})$

匹配逻辑说明

这个正则通过首尾锚点强制做全内容匹配,通过分支拆分覆盖所有你要求的合法输入场景:

  • 分支1匹配纯整数格式:1-4位任意数字,覆盖1、11、111、1111这类不带小数的合法输入,严格限制整数部分最长为4位
  • 分支2匹配带小数的组合格式:1-4位数字 + 转义后的真实小数点 + 1-4位数字,完整覆盖从1位整数搭配1-4位小数、到4位整数搭配1-4位小数的所有合法组合,和你列出的全部有效示例完全对齐

自动拦截的非法场景

  • 长度超过4位的纯整数(如12345)
  • 没有整数部分的小数(如.123)
  • 小数点后无数字的格式(如123.)
  • 小数部分长度超过4位的输入(如123.12345)
  • 包含非数字字符的输入(如12a.34)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.13 10:45:04