正規表現についての質問です。桁数に1を書くと一致しますが、1より大きい数値を書くと一致しません。
Jun 23, 2016 pm 02:02 PM 通常のルールは次のとおりです:
$patten='/^[1-9]\d{5}[1-2]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/';//就是最后这个4
最後の 4 を 1 に変更すると一致しますが、1 より大きい値に変更すると機能しません
この通常のルールは、ID を照合するために使用することを目的としています。どちらの桁が大きいか あれば参考に共有していただければ幸いです ~15ビット、18ビット対応~
ディスカッションへの返信(解決策)
表2. よく使われる修飾子
コード/構文の説明
* 0 回以上繰り返します
+ 1 回以上繰り返します
? 0 回以上繰り返します
{n} n 回繰り返します
{n,} n 回以上繰り返します
{n,m} n を繰り返します
15桁のIDカードがどのように配置されているのか分からないので、参考にさせていただきます
世代(現在は廃止されており、判断する必要はありません)
市外局番(6桁) 生まれ年(2桁) 誕生月(2桁) 生まれた日(2桁) 番号(3桁) 計15桁
第二世代
市外局番(6桁) 生年( 4桁) 誕生月(2桁) 生年月日(2桁) 数字(3桁) チェックデジット(1桁) 計18桁
チェックデジットは[dX])?$/の場合もございます
3. 正確な判定(第 2 世代) はチェック コード生成アルゴリズムを使用する必要があります。各国言語の「IDカード認証コード生成機能」はオンラインでご覧いただけます
1. ID番号の意味:
生成(現在は廃止されており、判断する必要はありません)
第二世代
市外局番(6桁) 誕生年(4桁) 誕生月(2桁) 誕生日(2桁) ) シリアル番号(3桁) チェックデジット(1桁) 合計18桁
チェックデジットは{2}[dX])?$/
3. 正確な判断…
function validateIdNumber($idnumber){ $patten='/^\d{17}$/'; preg_match($patten,$idnumber,$match); var_dump($match);//为什么这也显示的是FALSE??我16位就可以,加到17就不行了,这到底是什么问题啊??? } validateidnumber(22111111111234563);
validateidnumber( "22111111111234563 " );
文字列を使うので数値は範囲外です
本来ID番号は文字列であるべきです
2階xuzuningさんの回答より引用: 1. ID番号の意味:
世代(現在は廃止され判定不要)
市外局番(6桁) 生まれた年(2桁) 生まれた月(2桁) 生まれた日(2桁) 通し番号(3桁) 合計15桁
第二世代
チェックデジットは、何が問題ですか? 16 桁を超えると科学表記に変更されるため、16 桁を超える数値は元の数値ではありません

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











LaravelのバックエンドでReactアプリを構築する:パート2、React
