Php regular expression to determine whether it is a valid ID card number, php to determine the ID card number
This example describes how to use php regular expressions to determine whether a regular ID card number is valid. We will share this with you for your reference. The details are as follows:
/*** Determine whether the ID card number is valid * @ param $ mobile * @ return int */function isCreditNo ($ vStr) {$ vCity = array ('11 ', '12', '13', '14', '15', '21', '22', '23', '31', '32', '33 ', '34 ', '35', '36', '37 ', '41', '42 ', '43', '44 ', '45', '46 ', '50', '51', '52 ', '53', '54 ', '61', '62 ', '63', '64', '65 ', '71 ', '81', '82 ', '91'); if (! Preg_match ('/^ ([\ d] {17} [xX \ d] | [\ d] {15}) $/', $ vStr) return false; if (! In_array (substr ($ vStr, 0, 2), $ vCity) return false; $ vStr = preg_replace ('/[xX] $/I', 'A ', $ vStr); $ vLength = strlen ($ vStr); if ($ vLength = 18) {$ vBirthday = substr ($ vStr, 6, 4 ). '-'. substr ($ vStr, 10, 2 ). '-'. substr ($ vStr, 12, 2);} else {$ vBirthday = '19 '. substr ($ vStr, 6, 2 ). '-'. substr ($ vStr, 8, 2 ). '-'. substr ($ vStr, 10, 2);} if (date ('Y-m-d', strtotime ($ vBirthday ))! = $ VBirthday) return false; if ($ vLength = 18) {$ vSum = 0; for ($ I = 17; $ I >=0; $ I --) {$ vSubStr = substr ($ vStr, 17-$ I, 1); $ vSum + = (pow (2, $ I) % 11) * ($ vSubStr = 'A ')? 10: intval ($ vSubStr, 11);} if ($ vSum % 11! = 1) return false;} return true ;}
PS: here we will provide two very convenient Regular Expression tools for your reference:
Javascript Regular Expression online testing tool:
Http://tools.jb51.net/regex/javascript
Regular Expression generation tool:
Http://tools.jb51.net/regex/create_reg
In addition, we provide a local ID card information query tool for your reference:
Online query of local ID card information:
Http://tools.jb51.net/bianmin/sfz