我之前已经制作了输入验证器来检查电子邮件模式,密码最小和最大长度,密码确认等。
现在我手上有了新的东西,我有点卡住了,不知道从哪里开始。
我的输入必须是13个数字,它必须根据下面发布的算法(数学结果)检查插入的13个数字是否包含有效或无效的公民身份。
公民身份标识长度为13个数字,格式如下:
DDMMGGGRRSSSK
在下面的示例中,DDMMGGG表示出生的日期、月份和年份:
1010990代表1990年10月10日。
RR表示公民所在的地区,可以包含以下数字:
00至99
SSS代表性别的数字,对于男性,它必须是一个小于499的数字,对于女性,它必须大于500。
现在最后一个数字,也就是第13个数字是特殊控制号。
下面的工作公民身份ID示例以及用于获取有效/无效公民身份ID的算法:
示例: ID 0308964384007
ZZZ = (0 * 7) + (3 * 6) + (0 * 5) + (8 * 4) + (9 * 3) + (6 * 2) + (4 * 7) + (3 * 6) + (8 * 5) + (4 * 4) + (0 * 3) + (2 * 0) =0 +18 +0 +32 +27 +12 +28 +18 +40 +16 +0 +0= 191: 11 = 17 ====> 81 11-4 =7
将得到的和称为"ZZZ“。*我们将"ZZZ“除以11。”让我们调用上面操作的剩余部分"OST“。“我们从11中减去OST,然后我们得到差值,我们称之为"RAZ”(RAZ = 11-OST)。
如果rest的值为1 (OST = 1,RAZ = 10),则ID不正确
如果其余的值为0 (OST =0,即ZZZ数可被11整除),则控制数字K为0 (K = 0)
if the residue number is between 1 and 11 (1 <OST <11) the control digit K is the difference between 11 and residue (K = RAZ)
如果K不同于"RAZ“ID是不正确的
我的数学和数学英语都不是最好的,但希望有人能从上面的数学例子中找出答案。
这是javascript中的工作代码片段:
_validateJMBG: function(value, countryCode) {
if (!/^\d{13}$/.test(value)) {
return false;
}
var day = parseInt(value.substr(0, 2), 10),
month = parseInt(value.substr(2, 2), 10),
year = parseInt(value.substr(4, 3), 10),
rr = parseInt(value.substr(7, 2), 10),
k = parseInt(value.substr(12, 1), 10);
// Validate date of birth
// FIXME: Validate the year of birth
if (day > 31 || month > 12) {
return false;
}
// Validate checksum
var sum = 0;
for (var i = 0; i < 6; i++) {
sum += (7 - i) * (parseInt(value.charAt(i), 10) + parseInt(value.charAt(i + 6), 10));
}
sum = 11 - sum % 11;
if (sum === 10 || sum === 11) {
sum = 0;
}
if (sum !== k) {
return false;
}
switch (countryCode.toUpperCase()) {
case 'BA':
return (10 <= rr && rr <= 19);
case 'MK':
return (41 <= rr && rr <= 49);
case 'ME':
return (20 <= rr && rr <= 29);
case 'RS':
return (70 <= rr && rr <= 99);
case 'SI':
return (50 <= rr && rr <= 59);
default:
return true;
}
},
_ba: function(value) {
return this._validateJMBG(value, 'BA');
},
希望有人能帮助我在angular2+中完成这件事,或者至少给我指出正确的direction.Thank,谢谢你的时间和努力!
我想要达到什么目的?
如果我触摸输入并在我的输入字段中插入13个数字,我希望它使用上面发布的算法来显示插入的ID是有效还是无效,这取决于数学结果。
https://stackoverflow.com/questions/50689075
复制相似问题