1. 程式人生 > >15位或18位長度身份證號碼JS驗證

15位或18位長度身份證號碼JS驗證

免責宣告:身份證號為隨機組合而成,不會涉及任何隱私洩密問題,也非現實生活中真實的身份證號碼;身份證號碼所屬年齡均為18歲以上,均已通過校驗。

var IdNum1 = “320583198603316426”; // 測試號碼1(18位)
var IdNum2 = “53062519890126897X”; // 測試號碼2(18位,末位校驗碼為X)
var IdNum3 = “450111720930333”; // 測試號碼3 (15位)

瀏覽器測試結果:
這裡寫圖片描述

/* 身份證號碼驗證
* 1.驗證通過返回true,否則返回false。
* 2.包括15位和18位長度的身份證號碼的驗證
*/
checkIdCard = function(obj) {
// 校驗長度,型別
if (isCardNo(obj) === false) {
return false;
}
// 檢查省份
if (checkProvince(obj) === false) {
return false;
}
// 校驗生日
if (checkBirthday(obj) === false) {
return false;
}
// 檢驗位的檢測
if (checkParity(obj) === false) {
return false;
}
return true;
};

var vcity = {
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 : “國外”
};

// 檢查號碼是否符合規範,包括長度,型別
isCardNo = function(obj) {
// 身份證號碼為15位或者18位,15位時全為數字,18位前17位為數字,最後一位是校驗位,可能為數字或字元X
var reg = /(^\d{15})|(\d17(\d|X))/;
if (reg.test(obj) === false) {
return false;
}
return true;
};
// 取身份證前兩位,校驗省份
checkProvince = function(obj) {
var province = obj.substr(0, 2);
if (vcity[province] == undefined) {
return false;
}
return true;
};
// 檢查生日是否正確
checkBirthday = function(obj) {
var len = obj.length;
// 身份證15位時,次序為省(3位)市(3位)年(2位)月(2位)日(2位)校驗位(3位),皆為數字
if (len == ‘15’) {
var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})/;  
        var arr_data = obj.match(re_fifteen);  
        var year = arr_data[2];  
        var month = arr_data[3];  
        var day = arr_data[4];  
        var birthday = new Date(‘19’ + year + ‘/’ + month + ‘/’ + day);  
        return verifyBirthday(‘19’ + year, month, day, birthday);  
    }  
    // 身份證18位時,次序為省(3位)市(3位)年(4位)月(2位)日(2位)校驗位(4位),校驗位末尾可能為X  
    if (len == ‘18’) {  
        var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)

/;
var arr_data = obj.match(re_eighteen);
var year = arr_data[2];
var month = arr_data[3];
var day = arr_data[4];
var birthday = new Date(year + ‘/’ + month + ‘/’ + day);
return verifyBirthday(year, month, day, birthday);
}
return false;
};
// 校驗日期
verifyBirthday = function(year, month, day, birthday) {
var now = new Date();
var now_year = now.getFullYear();
// 年月日是否合理
if (birthday.getFullYear() == year && (birthday.getMonth() + 1) == month
&& birthday.getDate() == day) {
// 判斷年份的範圍(3歲到100歲之間)
var time = now_year - year;
if (time >= 0 && time <= 130) {
return true;
}
return false;
}
return false;
};
// 校驗位的檢測
checkParity = function(obj) {
// 15位轉18位
obj = changeFivteenToEighteen(obj);
var len = obj.length;
if (len == ‘18’) {
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8,
4, 2);
var arrCh = new Array(‘1’, ‘0’, ‘X’, ‘9’, ‘8’, ‘7’, ‘6’, ‘5’, ‘4’, ‘3’,
‘2’);
var cardTemp = 0, i, valnum;
for (i = 0; i < 17; i++) {
cardTemp += obj.substr(i, 1) * arrInt[i];
}
valnum = arrCh[cardTemp % 11];
if (valnum == obj.substr(17, 1)) {
return true;
}
return false;
}
return false;
};
// 15位轉18位身份證號
changeFivteenToEighteen = function(obj) {
if (obj.length == ‘15’) {
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8,
4, 2);
var arrCh = new Array(‘1’, ‘0’, ‘X’, ‘9’, ‘8’, ‘7’, ‘6’, ‘5’, ‘4’, ‘3’,
‘2’);
var cardTemp = 0, i;
obj = obj.substr(0, 6) + ‘19’ + obj.substr(6, obj.length - 6);
for (i = 0; i < 17; i++) {
cardTemp += obj.substr(i, 1) * arrInt[i];
}
obj += arrCh[cardTemp % 11];
return obj;
}
return obj;
};

相關推薦

1518長度身份證號碼JS驗證

免責宣告:身份證號為隨機組合而成,不會涉及任何隱私洩密問題,也非現實生活中真實的身份證號碼;身份證號碼所屬年齡均為18歲以上,均已通過校驗。 var IdNum1 = “320583198603316426”; // 測試號碼1(18位) var IdN

java 校驗1518身份證號碼

package com.first.common.utility.idcard; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java

javascript 身份證號碼驗證函式(可辨真偽,支援1518身份證號)測試誤差為0

話不多說,直接上程式碼,我不生產程式碼,我只是程式碼的搬運工。 //驗證身份證號方法 var test = function (idcard) { var Errors = new Array("驗證通過!", "身份證號碼位數不對!", "身份證號碼出生日期超出範圍或含有非法

身份證號碼1518互轉

身份證各欄位意義: 工作需要,涉及到身份證號碼15位和18位的轉換,功能實現如下: # -*- coding:utf-8 -*- # 驗證身份證最後一位 ##1、將前面的身份證號碼17位數分別乘以不同的係數。從第一位到第十七位的係數分別為:7-9-10-5-8-4-2-1-6-3-7-9-

老版身份證號碼轉為新版身份證號碼1518

【問題描述】 老版的身份證號碼是15位的,有些政府網站上登記的是老版的號碼,15位,未做更新,所以需要手動更新為18位。 【解決辦法】 import numpy as np def id_corr

1518身份證號碼有什麼區別和聯絡

522529198802252219 身份證號碼:共18位組成  1-3位為省級行政區程式碼  4-6位為市、縣級行政區程式碼  7-10位為出生身年份  11-12位為出生身月份  13-14位為出生身日  15-16位為派出所轄區分派程式碼  17位為性別程式碼 18位

php 驗證 身份證號碼 合法性 相容 (1518身份證號碼

<?php header("Content-Type: text/html; charset=utf-8"); echo "<p align='center'> <form method='post'>

JS校驗身份證號碼(1518)

//檢查生日是否正確 checkBirthday = function(card) { var len = card.length; //身份證15位時,次序為省(3位)市(3位)年(2位)月(2位)日(2位)校驗位(3位),皆為數字 if(len == '15') { var re_fifteen = /^

【jq】驗證1518身份證號碼的正則表示式

function validateIdCard(idCard) { //15位和18位身份證號碼的正則表示式 var regIdCard = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(

身份證號碼1518的轉換

程式初始介面: 輸入15為身份證號碼,點選“轉換”按鈕後,進行驗證:沒有輸入身份證號碼: 輸入的不是15位: 身份證號碼中包含非數字: 正確的身份證轉換為18位身份證,並顯示出生日期和性別: 點選“重新輸入”去空文字框等 轉換演算法: 在6位行政區劃後插入2為世紀程式碼

Javascript實現身份證號碼1518的演算法

改後的程式如下: <SCRIPT LANGUAGE="JavaScript"><!--var lastNumber;var id = "輸入15位身份證號碼"; //15位身份證號碼 //這裡最好還加上身份證號碼的檢查(略) //取得前面17位號碼var

PHP校驗1518身份證

前言 看新公司框架原始碼的時候,發現了這個功能,於是搜尋一番並封裝了一下身份證號校驗的類。 目前大家的身份證號大多是 18 位的,當然,也不排除有些老人的身份證號是 15 位的。 如果強制要求是 18 位的話,會比較好,因為 15 位的身份證號沒有校驗碼,可以說,只要瞭解大概結構,隨手都可以造出一系列身

身份證校驗(支援1518身份證號)

//身份證號合法性驗證 //支援15位和18位身份證號//支援地址編碼、出生日期、校驗位驗證 function IdentityCodeValid(code) { var city = { 11: "北京", 12: "天津", 13: "河北", 14: "山西"

php 驗證身份證有效性,根據國家標準GB 11643-1999 1518通用

//驗證身份證是否有效 function validateIDCard($IDCard) { if (strlen($IDCard) == 18) { return check18IDCard($IDCard); } elseif ((strl

身份證驗證判斷、身份證正則表示式、1518身份證驗證

這次專案對身份證的輸入驗證要求比較高, 因此在網上多方搜查資料,得到了超嚴謹的身份證驗證正則(外加一點點判斷), 現進行記錄,以便後續使用,如下: //HTML部分 <input typ

vs+msys2+yasm 編譯libx264+ffmpeg詳細解釋(3264

下載msys2 下載yasm 安裝libx264 gcc 編譯libx264 (.a .dll) msvc編譯libx264(.lib .dll)

163264程式設計各資料型別佔的位元組數

全文參考:平安,幸福美滿! 的日誌,網址http://blog.163.com/hbu_lijian/blog/static/126129153201212892143856/ 16位  1位元組8位,2位元組16位  4位元組32位  8位元組64位 char  1位元組

[C/C++]_[初級]_[獲取Windows系統的位數3264]

場景 1.在Windows 64bit系統開發程式時, 某些情況需要判斷Program Files路徑, 但是64bit系統有兩個Program Files或 Program Files(x86), 這時候就需要根據當前系統的位數來獲取路徑了. 說明

關於如何判斷dll是3264的重大誤區

.net平臺支援的有32位、64位以及Any CPU三種編譯模式,這三種編譯模式會導致呼叫該dll時的相容問題。已知的可正常執行的組合有:①32位/64位/Any CPU模式的App呼叫Any CPU模式的dll檔案,除了64位App不能在32位系統執行以外,均可②32位Ap

C語言按與 按取反

https://blog.csdn.net/ZhaoFaxing/article/details/78905066   與運算:& 兩者都為1為1,否則為0 1&1=1,  1&0=0,  0&1=0,  0&