检测0、正整数、小数
预防:0.0.9、00065、215.
(^[1-9](0-9+)?(\.[0-9]{1,3})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9]{1,2})?$)
解析:
(^[1-9](0-9+)?(\.[0-9]{1,3})?$) [1-9](0-9+)正整数,\.[0-9]{1,3}小数点后最少1位,最多3位小数。避免5.(+等价于 {0,1})
(^(0){1}$) 1个0
(^[0-9]\.[0-9]([0-9]{1,2})?$) [0-9]\.表示0开头的小数,\.[0-9]小数点后必须跟1个数,([0-9]{1,2})?允许保留最少1位,最多两位(?等价于 {1,})
5位整数带两位小数
^([1-9]\d{0,4}|0)(\.\d{1,2})?$
知识点:
()表示可有可无
^正则开始
$正则结束
|或者
\转义字符
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字 等价于 '[^A-Za-z0-9_]'。
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
{}次数,{1}出现1次,{1,3}出现1到3次,{1,}最少出现1次
+等价于 {0,1}
?等价于 {1,}
js代码:
function checkreg(n){
var reg1 = /^[1-9]([0-9]+)?(\.[0-9]{1,6})?$/;
var reg2 = /^[0-9]\.[0-9]([0-9]{1,6})?$/;
var reg3 = /^(0){1}$/;
if(reg1.test(n)|| reg2.test(n)|| reg3.test(n)){
return true;
}else{
return false;
}
}
最大32位数--->^([0-9]{1}|[1-9][0-9]\d{0,30})$
^[0-9]{1}$|^([1-9][0-9]\d{0,30})$
^[0-9]{1}$ 个位数0-9
^([1-9][0-9]\d{0,30})$ 多位数最大30