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

寻求可限制0-100且最多两位小数的正则表达式解决方案

输入框数值0-100且最多两位小数的正则验证方案

你需要的是一个能同时满足「0到100之间」「最多两位小数」的正则表达式,之前拆分的验证规则确实存在冲突(比如FLOAT_NUMS允许负数,ONLY_NUMS不支持小数),下面直接给合并后的解决方案:

最终验证正则(针对输入完成后的校验)

这个正则可以匹配所有符合要求的合法数值,包括整数、带1-2位小数的数,同时支持逗号或小数点作为小数分隔符:

const VALIDATION = {
  VALID_RANGE_DECIMAL: (value: string) => {
    // 若允许空输入框,保留下面的判断;否则直接用正则校验
    if (!value) return true;
    // 核心正则
    const regex = /^(0|[1-9]\d?)([.,]\d{1,2})?$|^100([.,]0{1,2})?$/;
    return regex.test(value);
  },
};

正则拆解说明

  • ^(0|[1-9]\d?):匹配0,或者1-9开头的1-2位整数(避免出现01这种无效前置零的情况)
  • ([.,]\d{1,2})?:可选的小数部分,允许小数点或逗号后接1-2位数字
  • |^100([.,]0{1,2})?$:单独匹配100,或者100.0、100.00、100,0、100,00这类合法的100小数形式

实时输入限制正则(针对输入过程中的动态限制)

如果需要在用户输入过程中就限制输入内容(比如输入.时暂时允许,输入100后不能再输入其他数字),可以用下面的正则:

const VALIDATION = {
  REAL_TIME_VALID: (value: string) => {
    const regex = /^$|^0$|^0[.,]$|^0[.,]\d{0,2}$|^[1-9]\d?$|^[1-9]\d[.,]$|^[1-9]\d[.,]\d{0,2}$|^100$|^100[.,]$|^100[.,]0{0,2}$/;
    return regex.test(value);
  },
};

这个正则允许输入过程中的中间状态(比如空字符串、单个小数点、100.),同时严格限制最终只能生成符合要求的数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:54:50