下面这段代码来自网络上比较流行的正则表达式金额验证,由于很少自己写正则表达式,所以当提出需要限制最大金额的时候,我对这个表达式进行了一点改动,顺便做个笔记。
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("有误~");}; 1.解读表达式首先我们分析下这个表达式,即使没有正则表达式的基础也很好看懂。 该表达式的第一层有三个 “|” ,表示他允许有三种表达式。分别是:
(^1-9?(.[0-9]{1,2})?$)
^与$,基础知识,非新手略过
^ 表示匹配字符串的开始,$表示匹配字符串的结束,这两个符号的意义在于整个字符串的格式必须完全满足于该正则表达式,如果不加 ^或$ ,那诸如:bd12,12bd等等表达式可能都会判断为正确的金额格式,因为没有限制开始和结束,正则表达式只需要验证的目标存在需要的格式都算正确。
书归正传
[1-9] 表示从1-9取一位数字([0-9]+)? 表示从0-9取一位数字,+重复一次或