寻求可限制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
相关产品推荐
相关产品推荐

