在用户点击提交之前是否有人有图书馆或JavaScript片段来验证信用卡的校验位?信用卡的客户端验证
10
A
回答
19
1
如果你还没有使用jQuery插件,你可以使用这个函数。它基于Luhn算法,可容忍空格或破折号,因此应该适用于大多数需要它的数据输入案例。
http://af-design.com/blog/2010/08/18/validating-credit-card-numbers/
10
7
您可以使用此代码段与Luhn algorithm验证16位卡号:
function validateCardNumber(number) {
var regex = new RegExp("^[0-9]{16}$");
if (!regex.test(number))
return false;
return luhnCheck(number);
}
function luhnCheck(val) {
var sum = 0;
for (var i = 0; i < val.length; i++) {
var intVal = parseInt(val.substr(i, 1));
if (i % 2 == 0) {
intVal *= 2;
if (intVal > 9) {
intVal = 1 + (intVal % 10);
}
}
sum += intVal;
}
return (sum % 10) == 0;
}
1
Luhn formula是信用卡验证最流行的算法。不要害怕algorithm
这个词,你要找一个图书馆。这非常容易理解。维基百科的描述中,该算法可在3个步骤分:
- 从最右边的数字,这是校验位,向左移动,每第二个数字的两倍值;如果这种加倍操作的乘积大于9(例如,8×2 = 16),则和产品的 数字(例如,16:1 + 6 = 7,18:1 + 8 = 9)相加。
- 取所有数字的总和。
- 如果模10的总数等于0(如果总数为零),那么根据Luhn公式,该数是有效的;否则它不是 有效。
这是我的工作草案。
function luhn(anum){
anum = anum+'';
var sum = 0,
max = anum.length - 1;
//From the rightmost digit, which is the check digit, moving left
for(var j=max;j>=0;j--){
var digit = parseInt(anum[j]);
//Take the sum of all the digits
if((max - j) & 1){
//double the value of every second digit
var add = digit * 2;
//if the product of this doubling operation is greater than 9 ,
//then sum the digits of the products
sum += add < 10 ? add : 1 + add % 10;
}else{
sum += digit;
}
}
//If the total modulo 10 is equal to 0 (if the total ends in zero)
//then the number is valid according to the Luhn formula;else it is not valid.
return sum % 10 === 0;
}
luhn(79927398713) -> true
3
Luhn算法(也称为Luhn formula)是有用的,以验证各种识别号码(例如信用卡号码,IMEI)的。
我省略了算法的解释,因为它已经被别人曝光,但如果你需要最快的Javascript实现,你可以看到它here。
简而言之...
function luhn(array) {
return function (number) {
let len = number ? number.length : 0,
bit = 1,
sum = 0;
while (len--) {
sum += !(bit ^= 1) ? parseInt(number[len], 10) : array[number[len]];
}
return sum % 10 === 0 && sum > 0;
};
}([0, 2, 4, 6, 8, 1, 3, 5, 7, 9]);
注意,链接源是ES6语言(也称为JavaScript的2015年),但在被transpiled ES5(见index.js),它是完全单元测试。
此外,它可用于浏览器和/或node.js。
基准测试和其他实施在jsperf验证其高性能。
现在,如果您只是想使用它从链接repository抓住代码。
否则,它通过bower安装...
bower install luhn-alg
或通过npm ...
npm install luhn-alg
免责声明:我是luhn-alg
包的作者。
相关问题
- 1. 错误信息:客户端验证
- 2. 客户端验证
- 3. 客户端验证
- 4. 验证客户端
- 5. 禁用客户端验证
- 6. 禁用客户端验证
- 7. 验证客户端证书
- 8. 验证的RadioButtonGroup客户端
- 9. Rails的客户端验证
- 10. 客户端验证的OpenERP
- 11. Uploadify的客户端验证?
- 12. 使用客户端证书进行智能卡身份验证
- 13. 客户端表单验证?
- 14. 客户端身份验证
- 15. CloudTrax - 验证客户端
- 16. Telerik asp.net客户端验证
- 17. Silverlight客户端验证
- 18. angulars JS客户端验证
- 19. Reactjs客户端验证
- 20. 删除客户端验证
- 21. 在客户端验证
- 22. MVC客户端验证
- 23. FluentValidation客户端验证
- 24. 客户端表单验证。
- 25. Recaptcha客户端验证
- 26. ASP.NET CheckBoxList客户端验证
- 27. DDD和客户端验证
- 28. HTML FORM客户端验证
- 29. 客户端验证疑惑
- 30. 执行客户端验证
为什么你会想用JavaScript来验证信用卡信息? – 2008-11-01 03:16:58