インターネットWebサイトを構築するとき、個人情報を登録するときにID番号を使用することがよくあります。 IDカードを確認する必要があります。そうしないと、他の人は単に番号を入力するだけで渡されます。これにより、このWebサイトは非常にたわごとであると感じます。
ID番号にはルールがあります。
構造とフォーム
1。数の構造
市民権番号は、17桁のオントロジーコードと1桁の検証コードで構成される機能の組み合わせコードです。アレンジメント順序は、左から右にあります。6桁のアドレスコード、8桁の生年月日コード、3桁のシーケンスコード、1桁の検証コード。
2。アドレスコード
コーディングオブジェクトの永住権が配置されている郡(市、バナー、地区)の行政部門コードは、GB/T2260の規定に従って実装されるものとします。
3。生年月日
エンコードされたオブジェクトの誕生の年、月、日を示します。 GB/T7408の規定に従って実行されます。年、月、日のコードの間にセパレーターはありません。
4。シーケンスコード
同じアドレスコードで識別されたエリア内で、同じ年、月、日に生まれた人々に割り当てられたシーケンス番号が示されています。シーケンスコードの奇数数は男性に割り当てられ、偶数が女性に割り当てられます。
5。検証コード
最初の17桁の数値コードによると、検証コードはISO 7064:1983.mod 11-2検証コードに従って計算されました。
計算方法
1.以前のID番号の17桁の数に異なる係数を掛けます。最初の位置から17位までの係数は、7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2です。
2.これらの17桁の数値と係数を掛けた結果を追加します。
3.追加を使用して、11で割って残りが何であるかを確認しますか?
4.残りには11の数字しかない可能性があります:0-1-2-3-4-5-6-7-8-9-10。それに対応する最後のIDカードの数は、1-0-X-9-8-7-6-5-4-3-2です。
5。上記から、残りが3の場合、IDカードの18桁目が表示されることを知っています。
たとえば、男性のID番号は[530219200508011x]です。このIDカードが法的IDカードであるかどうかを見てみましょう。
最初に、最初の17ビット[(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9)+(0*5)+(0*5)+(0*5)+(0*5)+(0*7)+(5*9)の積の合計を取得します。 189、そして189 x 11で除算は189/11 = 17 ---- 2です。つまり、残りの数値は2です。最後に、対応するルールを使用して、残り2に対応する検証コードがXであることを知ることができます。したがって、これは正しいID番号であると判断できます。
上記は、バイドゥ百科事典から抜粋しています。
これは、オンラインで見つかった関連情報画像です。
既知の情報に基づいて、このメソッドの内部実装をJSで記述できます。最初の17ビット検証は実装が簡単であるため、あまり言いません。最後の数字の検証コードに焦点を当てます。
コードコピーは次のとおりです。
// ID番号検証
関数isidcard(cardid){
// IDカード正規表現(18ビット)
var isidcard2 =/^[1-9]/d {5}(19/d {2} | [2-9]/d {3})((0/d)|(1 [0-2]))
var stard = "10x98765432"; //最後のIDカードの番号
var first = [7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2]; // 1-17係数
var sum = 0;
if(!isidcard2.test(cardid)){
falseを返します。
}
var year = cardid.substr(6、4);
var month = cardid.substr(10、2);
var day = cardid.substr(12、2);
var誕生日= cardid.substr(6、8);
if(Birthind!= DateToString(new Date(year + '/' + month + '/' + day))){//日付が合法かどうかを確認します
falseを返します。
}
for(var i = 0; i <cardid.length -1; i ++){
sum += cardid [i] * first [i];
}
var result = sum%11;
var last = stard [result]; //計算された最後のID番号
if(cardid [cardid.length -1] .touppercase()== last){
trueを返します。
} それ以外 {
falseを返します。
}
}
// string to stringの日付return Date Format 2008080808
関数DateToString(日付){
if(date instanceof date){
var year = date.getTullyear();
var month = date.getMonth() + 1;
月=月<10? '0' +月:月;
var day = date.getDate();
Day = Day <10? '0' + day:day;
返品年 +月 +日。
}
戻る '';
}
ここでは18桁のIDカードのみが検証されており、15桁の第1世代IDカードを使用できません。
ここでは、0230、0431などの違法な日付などの日付の合法性も検証し、検証は可決されません。
また、この方法をjquery検証に追加して、簡単に確認することもできます。
カスタムjQuery検証検証方法を作成します
コードコピーは次のとおりです。
// ID番号検証
jquery.validator.addmethod( "isidcard"、
関数(値、要素){
this.optional(element)||を返します(isidcard(value));
}、
「身分証明書番号は違法です!」);
それがどのように機能するかを見るための簡単なデモをしましょう。
コードコピーは次のとおりです。
<!doctype html>
<html>
<head>
<Meta http-equiv = "content-type" content = "text /html; charset = utf-8" />
<title>
ID番号検証
</title>
<スクリプトsrc = "http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js">
</script>
<スクリプトsrc = "http://www.w3cschool.cc/try/demo_source/static/js/jquery.validate.js">
</script>
<script type = "text/javascript">
$(function(){
$( "#form1")。検証({
ルール:{
txtidcard:「isidcard」
}
});
});
// ID番号検証
関数isidcard(cardid){
// IDカード正規表現(18ビット)
var isidcard2 =/^[1-9]/d {5}(19/d {2} | [2-9]/d {3})((0/d)|(1 [0-2]))
var stard = "10x98765432"; //最後のIDカードの番号
var first = [7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2]; // 1-17係数
var sum = 0;
if(!isidcard2.test(cardid)){
falseを返します。
}
var year = cardid.substr(6、4);
var month = cardid.substr(10、2);
var day = cardid.substr(12、2);
var誕生日= cardid.substr(6、8);
if(Birthind!= DateToString(new Date(year+'/'+month+'/'+day))){//日付が合法かどうかを確認します
falseを返します。
}
for(var i = 0; i <cardid.length -1; i ++){
sum += cardid [i] * first [i];
}
var result = sum%11;
var last = stard [result]; //計算された最後のID番号
if(cardid [cardid.length -1] .touppercase()== last){
trueを返します。
} それ以外 {
falseを返します。
}
}
// string to stringの日付return Date Format 2008080808
関数DateToString(日付){
if(date instanceof date){
var year = date.getTullyear();
var month = date.getMonth() + 1;
月=月<10? '0' +月:月;
var day = date.getDate();
Day = Day <10? '0' + day:day;
返品年 +月 +日。
}
戻る '';
}
// jQueryはID番号の確認を検証します
jquery.validator.addmethod( "isidcard"、
関数(値、要素){
this.optional(element)||を返します(isidcard(value));
}、
「身分証明書番号は違法です!」);
</script>
</head>
<body>
<form id = "form1" method = "get" action = "">
<入力型= "text" id = "txtidcard" name = "txtidcard" />
<p>
<入力型= "submit" value = "submit" />
</p>
</form>
</body>
</html>
ID番号53010219200508011xでBaidu Encyclopediaで提供されます
検証を渡すことができ、xを0に変更してみてください
検証が失敗した場合、私たちが書いた検証方法は成功しました!信じられない場合は、ID番号を使用してみてください。 JSを使用してID番号を非常に簡単に確認したことがわかりました。
上記はこの記事のすべてです。あなたがそれを気に入ってくれることを願っています。