常用正则表达式
1、经纬度
//动态校验经纬坐标输入 var oldLng=$("#lng").val(); var oldLat=$("#lat").val(); var lngRe=/^[-]?(\d|([1-9]\d)|(1[0-7]\d)|(180))(\.\d*)?$/g; var latRe=/^[-]?(\d|([1-8]\d)|(90))(\.\d*)?$/g; $("#lng,#lat").on("input change propertychange",function(){ if(this.value.match(this.id=="lng"?lngRe:latRe)==null){ this.value=(this.id=="lng"?oldLng:oldLat);//输入非法,则恢复上次正确数据 }else{//保留上次正确数据 (this.id=="lng" ? oldLng = this.value : oldLat = this.value); } });
正则表达式分析:
经度坐标范围为 -180 ~ 180 ,而纬度坐标范围为 -90 ~ 90 ,以经度为例,表达式可作如下拆分:
0-9,10-99,100-179,180,这样对应的表达式可分别写为 \d,[1-9]\d,1[0-7]\d,(180),对他们进行“或”(|)运算,再考虑小数((\.\d*)?)以及负数(-),最后的正则表达式成为了这样: /^[-]?(\d|([1-9]\d)|(1[0-7]\d)|(180))(\.\d*)?$/g
同理,纬度的正则表达式就不难了(拆分步骤略,可参考经度): /^[-]?(\d|([1-8]\d)|(90))(\.\d*)?$/g
2、IP
(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5]\.){3}(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])
3、身份证
//身份证正则表达式(15位) isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/; //身份证正则表达式(18位) isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
4、手机号
/^1[3|4|5|7|8]\d{9}$/
5、邮箱
/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/
6、数字
验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0|[1-9][0-9]*)$ 验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$ 验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$ 验证非零的正整数:^\+?[1-9][0-9]*$ 验证非零的负整数:^\-[1-9][0-9]*$ 验证非负整数(正整数 + 0) ^\d+$ 验证非正整数(负整数 + 0) ^((-\d+)|(0+))$