前言 :
同事在实现发布商品中填写单价时,需要js校验价格是否符合金钱的格式,在网上找了一些,没有一个能解决问题的,都是简单的校验,漏洞百出。
我说这还不简单,不就一个正小数吗?
他说你写写就知道了,情况有多复杂,写就写,一写才知道情况确实很多,给他写了一个又一个,他都能找出不完美的问题,经过10轮修改后,最后彻底征服他了,得出最终完美版,发出来给大家分享一下,欢迎大家测试修改。
Documentvar reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
var money = "520.100";
//000 错
//0 对
//0. 错
//0.0 对
//050 错
//00050.12错
//70.1 对
//70.11 对
//70.111错
//500 正确
if (reg.test(money)) {
alert("正确~");
}else{
alert("有误~");
};
顺便上一下交流图: