0

我想使用 javascript 验证新加坡身份证,公式是

1) 以我想测试 NRIC 号码 S1234567 为例。第一个数字乘以 2,第二个数字乘以 7,第三个数字乘以 6,第四个数字乘以 5,第五个数字乘以 4,第六个数字乘以 3,第七个数字乘以 2。然后将总数相加。所以,1×2+2×7+3×6+4×5+5×4+6×3+7×2=106。

2) 如果身份证的第一个字母以 T 或 G 开头,则总数加 4。

3) 然后你把这个数除以 11 得到余数。106/11=9r7

4) 您可以使用以下代码根据 IC 类型(IC 中的第一个字母)获取字母表: 如果 IC 以 S 或 T 开头:0=J,1=Z,2=I,3=H, 4=G, 5=F, 6=E, 7=D, 8=C, 9=B, 10=A 如果IC以F或G开头:0=X, 1=W, 2=U, 3= T, 4=R, 5=Q, 6=P, 7=N, 8=M, 9=L, 10=K

我如何阅读每个数字来计算公式?提前致谢!

4

3 回答 3

1
string.charAt(charpos)

应该做的伎俩。

或者,

string.substr(charpos,1)

你也可以做

string[charpos]

但建议使用上述前两个。如果字符串为空,这将返回undefined,而其他选项都将返回空字符串。

另一个想法是

string.split("")[charpos]

最后,有

string.slice(charpos,1)

由于您一次只需要一个字符,我建议您使用charAt.

于 2012-07-08T04:31:53.163 回答
1

字符串是数组,因此您可以将变量分配给字母,假设您知道字符串具有固定长度,并且看起来如此,然后创建一个函数来评估字符并执行正确的操作:

var nric = 'S1234567'
var chars = {
  letter: nric[0],
  one: nric[1],
  ...
}
于 2012-07-08T04:47:37.337 回答
0

详细说明@elclanrs 答案:

var nric = 'S1234567'
var numVal = 0;     for(var i = 1, bound = nric.length; i < bound; i++){
      numVal +=  parseInt(nric[i]);
    }
if(nric[0] === 'S' && numVal === 28){
    alert('ok');
}else{
    alert('wrong');
}

应该或多或少地做到这一点。我相信,你可以自己做乘法:-)

于 2012-07-08T08:31:30.697 回答