如何在javascript中使用luhn算法获得下一个校验位
下面的代码使用luhn算法模块10验证某个数字是否有效如何在javascript中使用luhn算法获得下一个校验位,javascript,luhn,check-digit,Javascript,Luhn,Check Digit,下面的代码使用luhn算法模块10验证某个数字是否有效 function isCheckdigitCorrect(value) { // accept only digits, dashes or spaces if (/[^0-9-\s]+/.test(value)) return false; var nCheck = 0, nDigit = 0, bEven = false; value = value.replace(/\D/g, ""); for (var n =
function isCheckdigitCorrect(value) {
// accept only digits, dashes or spaces
if (/[^0-9-\s]+/.test(value)) return false;
var nCheck = 0, nDigit = 0, bEven = false;
value = value.replace(/\D/g, "");
for (var n = value.length - 1; n >= 0; n--) {
var cDigit = value.charAt(n),
nDigit = parseInt(cDigit, 10);
if (bEven) {
if ((nDigit *= 2) > 9) nDigit -= 9;
}
nCheck += nDigit;
bEven = !bEven;
}
return (nCheck % 10) == 0;
}
我需要另一个函数,该函数通过给出四位数字来生成下一个校验位,因此第五位数字将是下一位校验和。通过将当前函数修改为该函数,我可以得到下一个校验位:
function getCheckDigit(value) {
if (/[^0-9-\s]+/.test(value)) return false;
var nCheck = 0, nDigit = 0, bEven = true;
value = value.replace(/\D/g, "");
for (var n = value.length - 1; n >= 0; n--) {
var cDigit = value.charAt(n),
nDigit = parseInt(cDigit, 10);
if (bEven) {
if ((nDigit *= 2) > 9) nDigit -= 9;
}
nCheck += nDigit;
bEven = !bEven;
}
return (1000 - nCheck) % 10;
}
“我需要另一个功能”我明白,但你能发布你到目前为止尝试了什么吗?看看@evolutionxbox我还没有尝试过任何东西cz我不知道如何实现,实际上我尝试了相同的功能并修改了一点,但没有成功@M98这是我已经拥有的,这个函数根据luhn算法检查数字是否有效,我需要创建数字,包括checksum@M98哦,我看到下面的评论告诉我们如何生成一个,成功了,thnx:)Perfecto!很高兴看到你第一次回答了一个问题,你也可以接受你的答案为正确答案。堆栈溢出是一个开放的社区,这就是我喜欢它的原因+1给你