Home  >  Article  >  Backend Development  >  PHP regular expression method to verify the validity and gender of ID number

PHP regular expression method to verify the validity and gender of ID number

王林
王林Original
2023-06-24 09:36:101307browse

The ID card number is an important symbol for the identification of residents in our country. It can be used for identity verification on many occasions. In the application, in order to ensure the validity and accuracy of the ID number, it needs to be verified by regular expressions. This article will introduce how to use PHP regular expressions to verify the validity and gender of the ID number.

1. The composition and rules of the ID number

The ID number is composed of 18 digits or 17 digits plus 1 check code. Among them, the first 17 digits represent the ID card holder's information, and the last 1 digit represents the verification code, which is used to verify the correctness of the ID card number.

The rules for ID numbers are as follows:

  1. The first 6 digits are the area code, indicating the administrative region where the ID card holder is located.
  2. The next 8 digits are the birth date code, which represents the birth date of the ID card holder. The format is a six-digit number, of which the first two digits represent the year of birth and the last four digits represent the month and day of birth.
  3. The 17th digit is the gender code, odd numbers represent men, and even numbers represent women.
  4. The last digit is the check code, which is used to verify the correctness of the ID number.

2. Use regular expressions to verify the ID number

Using regular expressions can easily verify the validity of the ID number. The following is a simple regular expression example:

$pattern = '/^[1-9]d{5}(19|20)d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])d{3}[0-9Xx]$/';
$code = '110101199001011234';
if (preg_match($pattern, $code)) {
    echo '身份证号码有效';
} else {
    echo '身份证号码无效';
}

The rules of this regular expression are consistent with the rules of the ID number, and some qualifiers and character classes are used. Among them, ^ represents the beginning of the string, and $ represents the end of the string. [1-9] means that the first digit cannot be 0, and d{5} means that the next 5 digits are numbers. (19|20) indicates that the birth year of the ID card holder is a number starting with 19 or 20. (0[1-9]|1[012]) represents the number of birth month 01-12. (0[1-9]|12|3[01]) represents a number whose birth date is 01-31. d{3} means the last three digits can be any number, [0-9Xx] means the last digit is a number or letter X. Using this regular expression, you can easily verify the validity of the ID number.

3. Use regular expressions to verify the gender of the ID number

The 17th digit of the ID number represents the gender of the ID card holder, odd numbers represent male, and even numbers represent female. Through regular expressions, you can easily extract the 17th digit of the ID number and determine its gender.

The following is a simple example:

$pattern = '/^[1-9]d{5}(19|20)d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])(d{3})[0-9Xx]$/';
$code = '110101199001011234';
if (preg_match($pattern, $code, $matches)) {
    $sex = $matches[6] % 2 == 0 ? '女' : '男';
    echo '性别为' . $sex;
} else {
    echo '身份证号码无效';
}

This regular expression is the same as the previous one, except that there is an additional capture group (d{3}), which is used to capture the first digit of the ID number. 17 bits. Use the $matches variable to get the captured information and determine the gender based on the parity of the 17th position.

To sum up, by using simple regular expressions, you can easily verify the validity of the ID number and extract gender information. In practical applications, if more stringent and detailed verification rules are required, they can be adjusted and improved according to actual needs.

The above is the detailed content of PHP regular expression method to verify the validity and gender of ID number. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn