這篇文章主要介紹“php如何利用正則表達(dá)式只匹配身份證”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“php如何利用正則表達(dá)式只匹配身份證”文章能幫助大家解決問(wèn)題。
鳳縣網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司于2013年開(kāi)始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
首先,我們需要了解身份證號(hào)碼的結(jié)構(gòu)。根據(jù)國(guó)家標(biāo)準(zhǔn)《公民身份號(hào)碼》(GB 11643-1999)的規(guī)定,身份證號(hào)碼共18位,前17位為地區(qū)編碼和出生年月日編碼,第18位為校驗(yàn)碼。
其中,前6位為地區(qū)編碼,包括省、自治區(qū)、直轄市的名稱縮寫(xiě)。第7位至14位為出生年月日編碼,格式為YYYYMMDD。第15位至17位為順序號(hào),即同一天出生的人在同一地區(qū)的順序號(hào),其中第17位為奇數(shù)表示男性,偶數(shù)表示女性。最后一位為校驗(yàn)碼,是根據(jù)國(guó)家標(biāo)準(zhǔn)計(jì)算出來(lái)的一個(gè)數(shù)字。
根據(jù)身份證號(hào)碼的結(jié)構(gòu),我們可以編寫(xiě)如下的PHP正則表達(dá)式:
$pattern = '/^([1-9]\d{5})(19\d{2}|20\d{2})(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i';
上面的正則表達(dá)式中:
^ 表示以這個(gè)正則表達(dá)式開(kāi)始匹配
() 表示一個(gè)分組
[1-9] 表示1到9中的任意一個(gè)數(shù)字
\d 表示任意一個(gè)數(shù)字,等同于[0-9]
{5} 表示前面的元素要重復(fù)5次
| 表示或者
[12] 表示1或2
$ 表示以這個(gè)正則表達(dá)式結(jié)束匹配
i 表示對(duì)大小寫(xiě)不敏感
最后一位校驗(yàn)碼的匹配比較特殊。因?yàn)樽詈罂赡苁荴,所以我們使用(\d|X)來(lái)表示。
使用preg_match函數(shù)進(jìn)行身份證號(hào)碼的匹配,代碼如下:
$pattern = '/^([1-9]\d{5})(19\d{2}|20\d{2})(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i';
$id_card = '11010119880101001X';
if (preg_match($pattern, $id_card)) {
echo '匹配成功';
} else {
echo '匹配失敗';
}
在這個(gè)例子中,將$pattern和$id_card兩個(gè)變量作為參數(shù)傳遞給preg_match函數(shù)。如果匹配成功,就會(huì)輸出“匹配成功”,否則輸出“匹配失敗”。
關(guān)于“php如何利用正則表達(dá)式只匹配身份證”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。