利用正则表达式,通过js校验input框输入的金额(输入限制为数字,最多四位小数)

最近做的项目里有个自由输入金额的功能,由于用户输入不匹配字符而总是提醒的话,交互性不是很好,索性采取强制纠正格式。
采用的是 Stringreplace() 结合正则表达式方式,在用户 input 时,实时监控修改。下面是代码:

1
2
3
4
5
6
7
8
9
10
11
// 这里用了jquery,其实原生实现起来一样
$input.val($input.val().replace(/[^\d.]/g, "")); //清除"数字"和"."以外的字符
$input.val($input.val().replace(/^\./g, "")); //验证第一个字符是数字而不是字符
$input.val($input.val().replace(/\.{2,}/g, ".")); //只保留第一个.清除多余的       
$input.val($input.val().replace(".", "$#$").replace(/\./g, "").replace("$#$", "."));
$input.val($input.val().replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, '$1$2.$3')); //只能输入四个小数
$input.val($input.val().replace(/^0+/, "0"));// 去掉整数位最前面前多余的0(这里总是留有一个0,比如 01244.1241)
// 在>=1时做一下Number处理就好了
if ($input.val() >= 1) {
$input.val($input.val().replace(/^0+/, ""));
}