您的位置:

身份证正则表达式详细阐述

一、身份证正则表达式

身份证号码是中国公民的唯一身份标识,其格式是18位纯数字或17位数字加1位大写字母X。身份证正则表达式使用正则表达式来描述此格式,以进行身份证号码的合法性校验。具体的正则表达式如下所示:

/^([1-9]\d{5})(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/i

其中,^和$是表示字符串开始和结束的特殊字符,[]表示集合,\d表示数字,|表示或,()表示分组,{}表示重复次数,i表示忽略大小写,X表示大写字母x。

这个正则表达式可以分为6个部分:

  1. [1-9]\d{5}表示6位数字,第一位数字为1-9,后面5位为任意数字,这是地址码的格式要求。
  2. (19\d{2}|2\d{3})表示4位数字年份,19开头的表示19XX年,20开头的表示20XX年,这是出生年份的格式要求。
  3. (0[1-9]|1[0-2])表示2位数字月份,01-12之间,这是出生月份的格式要求。
  4. (0[1-9]|[12]\d|3[01])表示2位数字日期,01-31之间,这是出生日期的格式要求。
  5. \d{3}表示3位数字,这是顺序码的格式要求。
  6. ([0-9]|X)表示1位数字或大写字母X,这是校验码的格式要求。

二、js身份证正则表达式

在Javascript中,要使用正则表达式进行校验,可以使用RegExp对象来构造身份证正则表达式,并使用test()函数进行校验。示例代码如下:

const reg = /^([1-9]\d{5})(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/i;
const idCard = "330381199001011111";
if (reg.test(idCard)) {
    console.log("身份证号码合法");
} else {
    console.log("身份证号码不合法");
}

三、香港身份证正则表达式

香港身份证号码共有8位或10位,格式为[A-Z][\d]{6}[\(\d\)]或[A-Z][\d]{6}[\(\d\)],其中,字母由A至Z,数字由0至9,最后一位可以是数字或括号内的A。

香港身份证正则表达式如下所示:

/^[a-zA-Z]\d{6}[\(\d\)]$/

四、js身份证验证正则表达式

使用Javascript进行身份证验证需要使用RegExp对象和test()函数。示例代码如下:

function validateIdCard(num) {
    const reg = /^([1-9]\d{5})(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/i;
    if (!reg.test(num)) {
        return false;
    }
    return true;
}
const idCard = "330381199001011111";
if (validateIdCard(idCard)) {
    console.log("身份证号码合法");
} else {
    console.log("身份证号码不合法");
}

五、判断身份证的正则表达式

在判断身份证的过程中,需要先判断身份证号码是否合法,接着可以通过身份证号码来提取出性别和出生日期等信息。以下是用正则表达式提取出出生日期和顺序码的示例代码:

function getIdCardInfo(idCard) {
    const birthday = idCard.substring(6, 14);
    const sex = idCard.substring(16, 17);
    const order = idCard.substring(14, 17);
    const year = birthday.substring(0, 4);
    const month = birthday.substring(4, 6);
    const day = birthday.substring(6, 8);
    const date = new Date(year + "-" + month + "-" + day);
    const result = {
        birthday: date,
        sex: sex % 2 === 0 ? "女" : "男",
        order: parseInt(order)
    };
    return result;
}
const idCard = "330381199001011111";
if (validateIdCard(idCard)) {
    const info = getIdCardInfo(idCard);
    console.log("出生日期:" + info.birthday);
    console.log("性别:" + info.sex);
    console.log("顺序码:" + info.order);
} else {
    console.log("身份证号码不合法");
}

六、正则表达式提取身份证

如果要从一段文本中提取出身份证号码,可以使用正则表达式进行匹配和提取。示例代码如下:

const text = "身份证号码:330381199001011111";
const reg = /[1-9]\d{5}(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)/i;
const match = reg.exec(text);
if (match && match.length > 0) {
    console.log("身份证号码:" + match[0]);
}

七、利用正则表达式验证身份证合法性

利用正则表达式验证身份证的合法性是实现身份证验证的常用方法之一。以下是利用正则表达式来验证身份证的合法性的代码示例:

function validateIdCard(idCard) {
    const reg = /^([1-9]\d{5})(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/i;
    if (!reg.test(idCard)) {
        return false;
    }
    const Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];
    const Ai = "10X98765432";
    let sum = 0;
    for (let i = 0; i < 17; i++) {
        sum += parseInt(idCard.charAt(i)) * Wi[i];
    }
    const last = Ai.charAt(sum % 11);
    if (last !== idCard.charAt(17)) {
        return false;
    }
    return true;
}
const idCard = "330381199001011111";
if (validateIdCard(idCard)) {
    console.log("身份证号码合法");
} else {
    console.log("身份证号码不合法");
}

八、身份证的正则表达式代码

以下是JavaScript中常用的身份证正则表达式代码:

const reg = /^([1-9]\d{5})(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/i;

九、正则表达式匹配身份证

在文本中查找并匹配身份证号码可以使用正则表达式的match()函数。以下是一个示例代码:

const text = "身份证号码:330381199001011111";
const reg = /[1-9]\d{5}(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)/i;
const match = text.match(reg);
if (match && match.length > 0) {
    console.log("身份证号码:" + match[0]);
}

总结

本文详细阐述了身份证正则表达式的相关知识,包括身份证正则表达式、js身份证正则表达式、香港身份证正则表达式、js身份证验证正则表达式、判断身份证的正则表达式、正则表达式提取身份证、利用正则表达式验证身份证合法性、身份证的正则表达式代码和正则表达式匹配身份证等方面。通过本文的学习,读者可以更加深入地了解身份证正则表达式的具体实现方式和应用场景,从而更加灵活地应用身份证号码的校验和提取功能。