正規表示式擷取身份證號碼加密的方法

2021-08-21 04:31:16 字數 3092 閱讀 9401

直接上**:

1

2

3

4

var idcard ='420119188404098978x';

//保留前四位和後四位,中間用*號加密

idcard = idcard.replace(/(\d)\d*([0-9a-za-z])/,"$1******$2");

//結果:4201******978x

ps:下面介紹比較規範的身份證號驗證正規表示式

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

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

1、號碼的結構

2、位址碼(前六位數)

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

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

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

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

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

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

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

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

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

1

var acity=

2、正規表示式判斷

1

2

3

4

5

6

7

8

9

10

11

12

13

14

functioniscardid(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?"男":"女");//此次還可以判斷出輸入的身份證號的人性別

returntrue;

}

身份證號碼 正規表示式

定義判別使用者身份證號的正規表示式 15位或者18位,最後一位可以為字母 string regularexpression 1 9 d 18 19 20 d 0 1 9 10 11 12 0 2 1 9 10 20 30 31 d 0 9xx 1 9 d d 0 1 9 10 11 12 0 2 1...

身份證號碼的正規表示式

qnx使用實戰培訓,日入過萬,馬上來試試。1 號碼的結構 公民身份號碼是特徵組合碼,由十七位數字本體碼和一位校驗碼組成。排列順序從左至右依次為 六位數字位址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。2 位址碼 表示編碼物件常住戶口所在縣 縣級市 旗 區 的行政區劃 按gb t2260的...

身份證號碼驗證正規表示式

方案0 function isidcardno num d 0 9 x test num 校驗位按照iso 7064 1983.mod 11 2的規定生成,x可以認為是數字10。下面分別分析出生日期和校驗位 varlen,re len num.length if len 15 d d d d var...