由于工作关系,需要用到港澳台的身份证校验。总结一下
rex1= /[A-Z]{1,2}[0-9]{6}([0-9A])/ ; //香港身份证
rex2= /^[1|5|7][0-9]{6}[0−9Aa][0−9Aa]/; //澳门身份证
rex3= /[A-Z][0-9]{9}/; //台湾身份证
一、香港身份证
香港身份证首位是字母,最后一位是校验码,身份证号码例如:C668668(9)。
香港身份证号码由三部分组成:一个英文字母;6个数字;括号及0-9中的任一个数字,或者字母A。括号中的数字或字母A,是校验码,用于检验括号前面的号码的逻辑正确性。
逻辑关系:
先把首位字母改为数字,即A为1,B为2,C为3...Z为26,再乘以8;然后把字母后面的6个数字依次乘以7、6、5、4、3、2;再将以上所有乘积相加的和,除以11,得到余数;如果整除,则括号中的校验码为0,如果余数为1,则校验码为A,如果余数为2~10,则用11减去这个余数的差作校验码。
例如:P103265(1),P,在字母表中排行16,则以16代表,则计算校验码:
16×8+1×7+0×6+3×5+2×4+6×3+5×2=186
186÷11=16......余10
11-10=1,即校验码为1。
A 持证人拥有香港居留权
B 持证人所报称的出生日期或地点自首次登记以后,曾作出更改
C 持证人登记领证时在香港的居留受到入境事务处处长的限制
N 持证人所报的姓名自首次登记以后,曾作出更改
O 持证人报称在香港、澳门及中国以外其他地区或国家出生
R 持证人拥有香港入境权
U 持证人登记领证时在香港的居留不受入境事务处处长的限制
W 持证人报称在澳门地区出生
X 持证人报称在中国大陆出生
Z 持证人报称在香港出生
二、澳门身份证
身份证号码由8个拉丁数字组成(格式为“X/NNNNNN/Y”);澳葡政府把当时的葡萄牙国民身份证号码的6个拉丁数字作为澳门身份证的主要号码;在“/”符号前加上一个拉丁数字1、5或7以代表其取证时代,而在“/”符号后加上的拉丁数字则为查核用数码,是为方便电脑处理资料及检查号码输入的正确性而设。智能身份证将原有格式(X/NNNNNN/Y)改为XNNNNNN(Y),如1000248(3)。
1字开首的身份证号码代表是因龙的行动或1992年后领取身份证之人士,新发出的身份证亦以1字开首;5字开首的身份证号码代表持有或曾经持有葡萄牙国民身份证或葡萄牙给外国人身份证之人士;7字开首代表曾经取得蓝卡之人士,大多都是在1970年代至1980年代期间从中国内地持合法证件到澳门的人士。
三、台湾身份证
例子:A123456789
第一位数出生的县市
是用英文字母26个字母来分的
台北市为A
台北线为B
以此类推
第二位是男性或女性
男性为1
女性为2
后面的8位数字都为随机数
A 台北市10 B台中市11 C基隆市12 D台南市13 E高雄市14 F 新北市15 G宜兰县16 H桃园县17 I嘉义市34 J新竹县18 K苗栗县19 M南投县21 N彰化县22 O新竹市35 P云林县23 Q嘉义县24 R台南县25 S高雄县26 T屏东县27 U花莲县28 V台东县29 W金门县30 X澎湖县31 Z连江县33
已停发字母 L台中县20 R台南县25 S高雄县26 Y阳明山32
原文地址:https://www.cnblogs.com/Alex80/p/12059152.html