前言 :
同事在实现发布商品中填写单价时,需要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>
顺便上一下交流图: