正则写法:数字含小数点时必须带小数 整数最多9位小数最多6位
数字输入框内容合法性校验正则方案
核心校验规则
- 数字整数部分最多支持9位
- 若输入内容包含小数点,小数点后必须存在有效数字,且小数部分最多支持6位
- 适配用户键入、内容粘贴两类输入场景的实时校验
原有正则缺陷
原有正则/^(\d{0,9})(\.{0,1}\d{0,6})*$/存在两处逻辑漏洞:
- 对小数分组加了
*重复匹配量词,可能出现多小数点的异常匹配 - 小数部分数字匹配规则用了
{0,6}允许0位数字,会直接放行123456789.这类小数点后无内容的非法格式
正确正则写法
/^\d{1,9}(\.\d{1,6})?$/
正则逻辑拆解
^、$:从字符串开头到结尾做全量匹配,避免部分匹配漏过非法字符\d{1,9}:匹配1-9位整数,从长度上限制整数部分不超9位,同时不允许无整数段的点开头格式(\.\d{1,6})?:小数部分为可选匹配段:要么完全不输入小数点,要么输入小数点后必须跟随1-6位数字,直接杜绝小数点后无内容、小数位超长、多小数点的问题
匹配效果示例
合法匹配(放行)
123456789.12345619999999990.123456
非法匹配(拦截)
1234567890.1234567:整数位超9位、小数位超6位123456789.:小数点后无有效小数内容123.1234567:小数位超6位1234567890:整数位超9位12.34.56:存在多个小数点
内容的提问来源于stack exchange,提问作者crunch
相关产品推荐
相关产品推荐

