js判断货币数字怎么校验,正则和逐位判断两种写法都够用
写电商项目时,金额输入框的校验是绕不开的事。js判断货币数字,核心就是拦住非法格式:最多两位小数、不能以零开头、不能出现多个小数点。
最省事的写法是正则。/^(\d+)(\.\d{1,2})?$/ 能匹配整数或一位到两位小数的数字。但实际业务里还要叠加不能以零开头、小数部分不能全是零这些规则,正则越写越长,维护成本很高。
另一条路是逐位判断。拿到字符串后遍历,非数字非小数点的字符直接拦js判断货币数字怎么校验,正则和逐位判断两种写法都够用,小数点出现两次就拦,小数点后超过两位也拦。好处是出错时容易定位,可以针对不同错误弹不同的提示。
边缘case特别多。用户粘贴"1.2.3"、输入".5"、打全角"123",这些都得兜住。全角字符要提前做转换再匹配,否则正则直接失效。输入法切到中文模式产生的全角空格,建议在beforeinput事件里就拦掉。
项目里我一般用input事件做实时格式限制,blur时再校验金额范围js 判断货币数字,比如不能超过99999999.99。打字过程不卡人,提交前兜住业务规则,报错提示可以分层次,用户体感好很多。
标签: js 判断货币数字