1. 程式人生 > >正則實現二代身份證號碼驗證詳解

正則實現二代身份證號碼驗證詳解

最近專案需要對身份證進行比較合理的篩選,並不想用到第三方介面,所以寫了個方法:

包括支援身份證號合法性驗證, 支援18位身份證號,支援地址編碼、出生日期、校驗位驗證. 基本上這樣就可以了.

IdCodeValid:function(code){
	//身份證號合法性驗證
	//支援15位和18位身份證號
	//支援地址編碼、出生日期、校驗位驗證
	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 row={
		'pass':true,
		'msg':'驗證成功'
	};
	if(!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/.test(code)){
		row={
			'pass':false,
			'msg':'身份證號格式錯誤'
		};
	}else if(!city[code.substr(0,2)]){
		row={
			'pass':false,
			'msg':'身份證號地址編碼錯誤'
		};
	}else{
		//18位身份證需要驗證最後一位校驗位
		if(code.length == 18){
			code = code.split('');
			//∑(ai×Wi)(mod 11)
			//加權因子
			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;
			for (var i = 0; i < 17; i++)
			{
				ai = code[i];
				wi = factor[i];
				sum += ai * wi;
			}
			if(parity[sum % 11] != code[17].toUpperCase()){
				row={
					'pass':false,
					'msg':'身份證號校驗位錯誤'
				};
			}
		}
	}
	return row;
}

IdCodeValid('xxx');


正則表示式:
出生日期1800-2099 (18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])
身份證正則表示式 /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/
位校驗規則 6位地址編碼+8位出生日期+3位順序號+1位校驗位

相關推薦

實現身份證號碼驗證

最近專案需要對身份證進行比較合理的篩選,並不想用到第三方介面,所以寫了個方法: 包括支援身份證號合法性驗證, 支援18位身份證號,支援地址編碼、出生日期、校驗位驗證. 基本上這樣就可以了. IdCo

表示式實現身份證號碼驗證

最近專案需要對身份證進行比較合理的篩選,並不想用到第三方介面,所以寫了個方法: 包括支援身份證號合法性驗證, 支援18位身份證號,支援地址編碼、出生日期、校驗位驗證. 基本上這樣就可以了. IdCodeValid:function(code){ //身份證號合法性驗證 //支援15位和18位

身份證號碼編碼規則說明

11:"北京",12:"天津",13:"河北",14:"山西",15:"內蒙古",21:"遼寧",22:"吉林",23:"黑龍江", 31:"上海",32:"江蘇",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山東", 41:"河南",42:"湖北",43:"湖南",44:"廣

Android | 教你如何在安卓上實現身份證識別,一鍵實名認證

@目錄前言場景開發前準備android studio 安裝在專案級gradle裡新增華為maven倉在應用級的build.gradle裡面加上SDK依賴在AndroidManifest.xml檔案裡面增量新增模型自動下載在AndroidManifest.xml檔案裡面申請相機、訪問網路和儲存許可權程式碼開發關

notepad++表達式替換字符串

替換 提示 是否 解決 彈出 ability 保持 iat 能力 表達式 說明\t 制表符.\n 新行.. 匹配任意字符.| 匹配表達式左邊和右邊的字符. 例如, “ab|bc” 匹配 “ab” 或者 “bc”.[] 匹配列表之中的任何單個字符. 例如, “[ab]” 匹配

jmeter 表示式學習(一)--使用

jmeter自帶後置處理器:正則表示式提取器,可以用來提取介面響應裡的資訊,給予後續介面傳參用。 例如要提取響應結果裡的token欄位及sex欄位(響應內容為: "token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0

Python re模組之compile()和findall()

首先我們看下官方文件裡關於的compile的說明: re.compile(pattern, flags=0) Compile a regular expression pattern into a regular expression object, which can

15/18位身份證號碼驗證表達式總結(詳細版)

校驗碼 輸入 詳細 wid width adding 方式 http 效率 前言 開發過程中,常常需要對一些輸入信息進行有效性驗證,使用正則表達式進行校驗是最簡單、效率最高的方式了,下面就來看看15/18位身份證號碼驗證的正則表達式吧。 介紹 xxxxxx yyyy MM

身份證號碼表達式及驗證(JavaScript,Regex)

新疆 選擇 ade 理學 澳門 如果 span card div 簡言 在做用戶實名驗證時,常會用到身份證號碼的正則表達式及校驗方案。本文列舉了兩種驗證方案,大家可以根據自己的項目實際情況,選擇適合的方案。 身份證號碼說明 居民身份證號碼,正確、正式的稱謂應該是“公民身份

表示式-身份證號碼驗證

身份證號碼驗證 1.第一代身份證15位: /^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$/ 例: if (sfzhmcode.length == 15 &&

php不用驗證真假身份證 身份證號碼驗證

<?php $IDCard = new IDCard(); var_dump($IDCard::isCard($_GET['card'])); /** * 身份證處理類 */ class IDCard { //檢證身份證是否正確

Java實現身份證號碼驗證源碼分享

分隔 toc bst nbsp port birt random exti 一位數 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar;

表達式匹配身份證 電話號碼 郵箱 住宅電話 郵編等

ext 大寫字母 nsh 辦理 regexp nbsp 新的 pat 中文 # -*- coding: utf-8 -*- import re tt1 = "13143567781" tt2=‘[email protected]‘ tt3=‘4110241945111

python表示式 簡單的手機號碼格式的驗證

import re #手機號的匹配 phone = re.compile('^(13(7|8|9|6|5|4)|17(0|8|3|7)|18(2|3|6|7|9)|15(3|5|6|7|8|9))\d{8}$') num = input('請輸入手機號:') if re.match(phone

Android實現身份證號碼驗證

話不多說,直接上程式碼,因為與需求不符,略微修改了程式碼public class IDCardValidate { public static final String[] ValCodeArr = { "1", "0", "X", "9", "8", "7", "6

jQuery:電話、身份證、郵箱簡單校驗

toast title 常用 輸入數據 存在 pan test mail col if (!(/^1[3,5,6,7,8,9]\d{9}$/).test(e.detail.value.data_phone)) { wx.showToast({

shell表達

shell正則表達式 二 shell正則表達 二部分一、printf命令:1. 格式化輸出。(print format)2. 命令格式:printf‘打印格式‘實際內容1. 打印格式:1) \a(警告聲音輸出)1) \b(退格鍵)1) \n(輸出新的一行)1) \r(幀處於行的開始,即enter鍵)\t(

利用實現彩色控制臺輸出

返回 otto get onos soft turn nowrap itl 背景 近期忙了一陣less的二次開發的工作,期間遇到了不少須要向控制臺輸出彩色文字的需求。翻了下曾經同事的代碼,發現要麽自己拼轉義字符串,要麽使用一些不太好用的第三方庫。總之都不是非常合

基於和叠模式的計算器源碼

pre 默認參數 utf-8 nco 退出 spl pan ner imp 源碼如下: 1 # encoding:utf-8 2 # Author:"richie" 3 # Date:2017/8/8 4 import re 5 # 待處理數據 6 s =

編程樂趣:身份證號碼驗證的方法

adl substring track content else if ont article name out 隨著如今互聯網的發展,越來越多的註冊用戶的地方都用到了身份證。那麽對於輸入的身份證怎樣驗證呢?看以下的代碼,事實上非常easy。主要註意的是,眼下的身份證分