前言 :
同事在实现发布商品中填写单价时,需要js校验价格是否符合金钱的格式,在网上找了一些,没有一个能解决问题的,都是简单的校验,漏洞百出。
我说这还不简单,不就一个正小数吗?
他说你写写就知道了,情况有多复杂,写就写,一写才知道情况确实很多,给他写了一个又一个,他都能找出不完美的问题,经过10轮修改后,最后彻底征服他了,得出最终完美版,发出来给大家分享一下,欢迎大家测试修改。
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
var 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("有误~");
};
</script>
</body>
</html>
顺便上一下交流图:
