首页 > 文章列表 > PHP正则表达式验证输入字符串是否为身份证号码或护照号码格式

PHP正则表达式验证输入字符串是否为身份证号码或护照号码格式

PHP正则表达式 身份证号码 护照号码
309 2023-06-24

身份证号码和护照号码是人们生活中常见的证件号码。在实现涉及到这些证件号码的功能时,经常需要对输入的号码进行格式验证,以确保其正确性。而在PHP中,使用正则表达式可以很好地实现这一功能,本文就介绍如何使用PHP正则表达式验证输入字符串是否为身份证号码或护照号码格式。

一、身份证号码验证

身份证号码是由18位数字和最后一位可能是字母(校验码)组成的,其格式如下:

前6位为地区码,表示身份证发证地;

7~14位为出生年月日,其中第7位到第10位表示年份,第11位和第12位表示月份,第13位和第14位表示日期;

15~17位为顺序号,表示在该地区和日期下发的证件的顺序号;

最后一位为校验码,主要是用于检验前面的17位是否符合国家标准。

根据上述身份证号码的格式,可以使用正则表达式来进行验证。具体实现代码如下:

function validateIDCard($idCard) {
    $pattern = '/^d{6}(19|20)d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]d|3[0-1])d{3}[0-9X]$/';
    if (preg_match($pattern, $idCard)) {
        return true;
    } else {
        return false;
    }
}

上述代码中,使用了preg_match()函数和正则表达式来验证身份证号码格式。$pattern变量中存储的是用于验证身份证号码格式的正则表达式,其中d表示数字,|表示或者,[0-9X]表示最后一位可以是数字或者大写字母X。如果输入的字符串符合正则表达式的格式,即符合身份证号码的格式,则返回true,否则返回false。

二、护照号码验证

护照号码是由数字和字母组成的,其格式如下:

第1~2个字符为英文字符,表示发照国家;

第3~5个字符为数字或者字母,表示护照类型;

第6~14个字符为数字,表示护照的个人信息;

最后一个字符为数字或字母,是校验和。

当需要验证输入字符串是否符合护照号码格式时,同样可以使用PHP正则表达式。具体实现代码如下:

function validatePassport($passport) {
    $pattern = '/^[a-zA-Z]{2}d{3}[a-zA-Z0-9]{9}$/';
    if (preg_match($pattern, $passport)) {
        return true;
    } else {
        return false;
    }
}

上述代码中,同样使用preg_match()函数和正则表达式来验证护照号码格式。$pattern变量中存储的是用于验证护照号码格式的正则表达式,其中[a-zA-Z]表示英文字母,d表示数字,[a-zA-Z0-9]表示数字和字母都可以。如果输入的字符串符合正则表达式的格式,即符合护照号码的格式,则返回true,否则返回false。

总结

通过上述代码可以看出,使用PHP正则表达式可以非常方便地实现对身份证号码和护照号码格式的验证。开发人员可以根据应用场景和需求来进行个性化的修改和优化,以满足不同的验证要求。