JavaScriptは18桁または15桁の身分証番号が合法的かどうかを検証します.
21459 ワード
お客様はフロントで身分証の検証を強化するように要求していますが、残念ながらこれまで検討したことがありません.せいぜい簡単な規則で検証を完成します.この検証を完成させるために、身分証明書(18桁)のアルゴリズムを理解しました.修繕は機能を補完しました.また少し勉強します.私はただの初心者です.コードを贴り付けますので、皆さんの指点を期待しています.あなたのコメントの中で少し進歩したいです.ありがとうございます.
この記事の転載:http://www.cnblogs.com/bluescreen/archive/2012/06/16/2551959.html
- /*
-
- *QQ:909507090
- *var ck=new Qhjsw.IDChecks(" ");
- *var tip=ck.IDCk();
- *tip (object) 7
- *msg , 。 : 、
- *pass bool , 。 true ,false
- *idcode ,
- *address ( ),
- *sextag , 。0 ,1
- *sex 。
- *birthday 18 YYYY-MM-DD 15 YY-MM-DD :1991-01-01(18 )、91-01-01(15 )
- *
- *
- * , , ,
- * , 17
- * 18 ( ) Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2,1 ]
- * Y = [ 1, 0,'X' , 9, 8, 7, 6, 5, 4, 3, 2 ]
- * :Y_P = mod( ∑(Ai×Wi),11 )
- */
- var Qhjsw = {};
- Qhjsw.IDChecks = function (Code) {
- if(typeof Code!="string")
- {
- throw new Error(" !");
- }
- var city = { 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: " " };
- var Tip = {}; // ,
- var IDCode = Code;
- var code = []; // ,
- var sextable=[" "," "]; // , 。
- var Ck = function (IDCode) {
- if (!IDCode ||!/(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^\d{6}(18|19|20){1}\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X|x)$)/i.test(IDCode)) {
- Tip.msg = " ";
- Tip.pass = false;
- }
- else if (!city[IDCode.substr(0, 2)]) {
- Tip.msg = " ";
- Tip.pass = false;
- }
- else if(!_CheckBirthday(IDCode))
- {
- Tip.msg=" ";
- Tip.pass=false;
- }
- else {
-
- if (18 == IDCode.length) {
- code = IDCode.split('');
- var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
- var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
- var sum = 0;
- var ai = 0;
- var wi = 0;
- if(typeof code[17]=="string")
- {
- code[17]=code[17].toUpperCase();
- }
- for (var i = 0; i < 17; i++) {
- ai = code[i];
- wi = factor[i];
- sum += ai * wi;
- }
- var last = parity[sum % 11];
- if (parity[sum % 11] != code[17]) {
- Tip.msg = " ";
- Tip.pass = false;
- }
- else {
- Tip.msg = " ";
- Tip.pass = true;
- Tip.idcode = IDCode;
- Tip.address = city[IDCode.substr(0, 2)];
- Tip.sextag=_GetSex(IDCode);
- Tip.sex=sextable[Tip.sextag];
- Tip.birthday=_GetBirthday(IDCode);
-
- }
- }
- else {
- Tip.msg = " ";
- Tip.pass = true;
- Tip.idcode = IDCode;
- Tip.address = city[IDCode.substr(0, 2)];
- Tip.sextag=_GetSex(IDCode);
- Tip.sex=sextable[Tip.sextag];
- Tip.birthday=_GetBirthday(IDCode);
- }
- }
- };
- this.IDCk = function () {
- Ck(IDCode);
- return Tip;
- };
- function _CheckBirthday(IDCodes)
- {
- if(IDCodes.length==18)
- {
- var year = IDCodes.substring(6,10);
- var month = IDCodes.substring(10,12);
- var day = IDCodes.substring(12,14);
- var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));
- // getFullYear() ,
- if(temp_date.getFullYear()!=parseFloat(year)||temp_date.getMonth()!=parseFloat(month)-1
- ||temp_date.getDate()!=parseFloat(day)){
- return false;
- }
- else{
- return true;
- }
- }
- else{
- var year = IDCodes.substring(6,8);
- var month = IDCodes.substring(8,10);
- var day = IDCodes.substring(10,12);
- var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));
- // getYear()
- if(temp_date.getYear()!=parseFloat(year)||temp_date.getMonth()!=parseFloat(month)-1
- ||temp_date.getDate()!=parseFloat(day)){
- return false;
- }
- else{
- return true;
- }
- }
- }
- function _GetBirthday(IDCodes){
- if(IDCodes.length==18){
- var year = IDCodes.substring(6,10);
- var month = IDCodes.substring(10,12);
- var day = IDCodes.substring(12,14);
- return year+"-"+month+"-"+day;
- }
- else
- {
- var year = IDCodes.substring(6,8);
- var month = IDCodes.substring(8,10);
- var day = IDCodes.substring(10,12);
- return year+"-"+month+"-"+day;
-
- }
- }
- function _GetSex(IDCodes){
- if(IDCodes.length==18){
- if(IDCodes.substring(14,17)%2==0){
- return 0;
- }
- else{
- return 1;
- }
- }
- else
- {
- if(IDCodes.substring(14,15)%2==0){
- return 0;
- }
- else{
- return 1;
- }
- }
- }
-
- };
最近はJavaScriptを強化したいですが、いい本がたくさんありますか?ありがとうございます.この記事の転載:http://www.cnblogs.com/bluescreen/archive/2012/06/16/2551959.html