|
冏冏有神 LV17
发表于 18-2-2012 11:54:05
|
显示全部楼层
本帖最后由 冏冏有神 于 18-2-2012 12:00 编辑
这算法又不是什么秘密,老夫 n 年以前还是个程序猿的时候就写过,不光检验/算 NRIC,连带算 FIN 和 LBRN。
- function dig(id,n) {
- return parseInt(id.value.charAt(n));
- }
- function checkLBRN(id) {
- if (id.value.length == 10) {
- var S1 = dig(id,0)*6+dig(id,1)*7+dig(id,2)*8+dig(id,3)*9+dig(id,4)*1+dig(id,5)*2+dig(id,6)*3+dig(id,7)*4+dig(id,8)*5;
- var P = 10 - (S1 % 11);
- var S2 = "CDEGHKMNRWZ";
- if (id.value.charAt(9) != S2.charAt(P)) {
- return 1;
- }
- }
- else if (id.value.length == 9) {
- var S1 = dig(id,0)*9+dig(id,1)*8+dig(id,2)*7+dig(id,3)*6+dig(id,4)*5+dig(id,5)*4+dig(id,6)*3+dig(id,7)*2;
- var P = 10 - (S1 % 11);
- var S2 = "ABCDEJKLMNX";
- if (id.value.charAt(8) != S2.charAt(P)) {
- return 1;
- }
- }
- else {
- return 1;
- }
- if (id.value.charAt(1) < '0' || id.value.charAt(1) > '9' ||
- id.value.charAt(2) < '0' || id.value.charAt(2) > '9' ||
- id.value.charAt(3) < '0' || id.value.charAt(3) > '9' ||
- id.value.charAt(4) < '0' || id.value.charAt(4) > '9' ||
- id.value.charAt(5) < '0' || id.value.charAt(5) > '9' ||
- id.value.charAt(6) < '0' || id.value.charAt(6) > '9' ||
- id.value.charAt(7) < '0' || id.value.charAt(7) > '9' ) {
- return 1 ;
- }
- return 0;
- }
- function checkFIN(id) {
- if (id.value.length != 9) {
- return 1;
- }
- if (id.value.charAt(0) != "F" && id.value.charAt(0) != "G") {
- return 1;
- }
- var S1 = dig(id,1)*2+dig(id,2)*7+dig(id,3)*6+dig(id,4)*5+dig(id,5)*4+dig(id,6)*3+dig(id,7)*2;
- if (id.value.charAt(0) == "G") {
- S1 += 4;
- }
- var P = 10 - (S1 % 11);
- var S2 = "KLMNPQRTUWX";
- if (id.value.charAt(8) != S2.charAt(P)) {
- return 1;
- }
- return 0;
- }
- function checkNRIC(id) {
- if (id.value.length != 9) {
- return 1;
- }
- if (id.value.charAt(0) != "S") {
- return 1;
- }
- var S1 = dig(id,1)*2+dig(id,2)*7+dig(id,3)*6+dig(id,4)*5+dig(id,5)*4+dig(id,6)*3+dig(id,7)*2;
- var P = 10 - (S1 % 11);
- var S2 = "ABCDEFGHIZJ";
- if (id.value.charAt(8) != S2.charAt(P)) {
- return 1;
- }
- return 0;
- }
复制代码
|
|