比較規範的身份證號驗證正規表示式

2022-04-07 19:37:58 字數 1519 閱讀 1555

一些要求使用者資訊比較嚴格的地方比如使用者註冊、登入的時候都需要驗證使用者的身份證是否合法,而通過這些驗證能大大的過濾掉很多水客,給你的系統帶來非常精準的使用者資訊。

很多時候我們都是通過一組正規表示式來判斷使用者輸入的身份證是否合法,那在用正規表示式判斷之前,你對身份證號的組成有多少了解呢?下面來說說乙個身份證號裡面包含了多少的資訊:

1、號碼的結構2、位址碼(前六位數)

表示編碼物件常住戶口所在縣(市、旗、區)的行政區劃**,按gb/t2260的規定執行。

3、出生日期碼(第七位至十四位)

表示編碼物件出生的年、月、日,按gb/t7408的規定執行,年、月、日**之間不用分隔符。

4、順序碼(第十五位至十七位)

表示在同一位址碼所標識的區域範圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配給女性。

5、校驗碼(第十八位數)

作為尾號的校驗碼,是由號碼編制單位按統一的公式計算出來的,如果某人的尾號是0-9,都不會出現x,但如果尾號是10,那麼就得用x來代替,因為如果用10做尾號,那麼 此人的身份證就變成了19位。x是羅馬數字的10,用x來代替10,可以保證公民的身份證符合國家標準。

在知道身份證號結構組成各部分的意思後,我們開始進入主題:

1、定義乙個全國地區的物件

var acity=
2、正規表示式判斷

function iscardid(sid)(\d|x)$/i.test(sid)) return "你輸入的身份證長度或格式錯誤"; 

sid=sid.replace(/x$/i,"a");

if(acity[parseint(sid.substr(0,2))]==null) return "你的身份證地區非法";

sbirthday=sid.substr(6,4)+"-"+number(sid.substr(10,2))+"-"+number(sid.substr(12,2));

var d=new date(sbirthday.replace(/-/g,"/")) ;

if(sbirthday!=(d.getfullyear()+"-"+ (d.getmonth()+1) + "-" + d.getdate()))return "身份證上的出生日期非法";

for(var i = 17;i>=0;i --) isum += (math.pow(2,i) % 11) * parseint(sid.charat(17 - i),11) ;

if(isum%11!=1) return "你輸入的身份證號非法";

//acity[parseint(sid.substr(0,2))]+","+sbirthday+","+(sid.substr(16,1)%2?"男":"女");//此次還可以判斷出輸入的身份證號的人性別

return true;

}

身份證號驗證

原文 身份證號驗證 public static boolean isidnumber string idnumber 定義判別使用者身份證號的正規表示式 15位或者18位,最後一位可以為字母 string regularexpression 1 9 d 18 19 20 d 0 1 9 10 11 ...

身份證號驗證

身份證號組成 17位數字 1位校驗碼 位址碼 前六位 出生日期碼 第七位至第十位 順序碼 第十五位至十七位 對同年同月同日生的人便定的順序號,順序號奇數為男生,偶數為女生 檢驗碼 第十八位 0 9 x var acity function iscarid sid d x i.test sid ret...

js 身份證號驗證

function iscardid sid var isum 0 var info if d d x i.test sid return 身份證長度或格式錯誤 sid sid.replace x i,a if acity parseint sid.substr 0,2 null return 身份證...