身份证号正则校验 和 手机号正则校验

身份证号正则校验

中国地区的身份证号码分为两种:15位和18位。对应的正则表达式如下:

进行简单验证可以使用以下正则,它仅校验格式:

```javascript
var reg15 = /^\d{15}$/; // 15位身份证号
var reg18 = /^\d{17}[\dXx]$/; // 18位身份证号
```

但是上述校验身份证号仅仅是校验其格式对不对,并没有校验其合法性。如果你需要校验其合法性,需要校验出生日期的合法性以及最后一位的校验位(仅18位身份证)是否正确(校验位为前17位通过特定加权因子相乘的和模11,得到的余数对应特定的编码)。

以下是一个较全面的例子:

function checkIdCard(idCard) {
    var regIdCard=
    /(^[1-9]\d{5}(18|19|20)?\d{4}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)/;  
    if(regIdCard.test(idCard)){
        if(idCard.length == 18){
            var idCardWi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
            var idCardY = new Array(1,0,'X',9,8,7,6,5,4,3,2);
            var idCardWiSum = 0;
            for(var i = 0; i < 17; i++){
                idCardWiSum += idCard.substring(i,i+1)*idCardWi[i];
            }
            var idCardMod = idCardWiSum%11;
            var idCardLast = idCard.substring(17);
            if(idCardLast == idCardY[idCardMod].toLowerCase()){
                return true;
            }else{
                return false;
            }
        }
    }else{
        return false;
    }
}



序号以及每部分的说明:  
前1、2位数字表示:所在省份的代码;
第3、4位数字表示:所在城市的代码;
第5、6位数字表示:所在区县的代码;
第7-14位数字表示:出生年、月、日;
第15、16位数字表示:所在地的派出所的代码;
第17位数字表示性别:奇数表示男性,偶数表示女性;
第18位数字是校检码,用来检验身份证的正确性。

手机号正则校验

根据国家号码段分配规则,手机号码主要有13*、14*、15*、16*、17*、18*、19*等段位。以下是相对全面的正则表达式:

var reg = /^1[3-9][0-9]{9}$/;



在这个正则表达式中:

- "^1" 表示手机号码以数字1开头;
- "[3-9]" 表示手机号码的第二位可以是3到9之间的任何一个数字;
- "[0-9]{9}$" 匹配接下来的9位数字,并且这9位数字必须是字符串的结尾。

这个正则表达式只能简单验证手机号码的格式,并不能保证手机号码真实存在。

你可能感兴趣的:(正则表达式)