正则表达式

Posted Leo的笔记本

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。

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[05]\.){3}(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[05])

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_-][email protected][a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/

 

以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

经纬度校验

notepad++ 正则表达式交换两个值

为啥这个 javascript 正则表达式不起作用?

Pandas 正则表达式返回括号中的值

python - urls.py正则表达式帮助坐标

js正則匹配经纬度(经纬度逗号隔开)