正規表現についての質問です。数字の数に1を書くと一致しますが、1より大きい数字を書くと一致しません。
通常のルールは次のとおりです:
<br />
$patten='/^[1-9]\d{5}[1-2]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/';//就是最后这个4<br />
ログイン後にコピー
最後の4を1に変更すると一致しますが、1より大きい値に変更すると機能しません
この正規表現は、ID カード番号を照合するために使用することを目的としています。ヒーローがこの正規表現を持っている場合は、それを共有して学習していただければ幸いです。15 桁と 18 桁の正規表現と互換性があります。
-----解決策--------------------------------1. ID 番号の意味:
世代 (現在は削除されており、判断する必要はありません)
市外局番(6桁) 誕生年(2桁) 誕生月(2桁) 生年月日(2桁) シリアルナンバー(3桁) 合計15桁
二代目
市外局番(6桁) 誕生年(4桁) 誕生月(2桁) 生年月日(2桁) シリアルナンバー(3桁) チェックデジット(1桁) 合計18桁
チェックデジットは X
である可能性があります
2.桁数が正しいか判断するだけの簡単判定
/^d{15}(?:d{2}[dX])?$/
3. 正確な判定(第二世代)はチェックコード生成アルゴリズムを使用する必要があります。各国言語の「IDカード認証コード生成機能」はオンラインでご覧いただけます
-----解決策--------------- -----validateidnumber(
"22111111111234563
" );
文字列や数値の使用は範囲外です
本来、ID 番号は文字列
である必要があります。