在用戶點擊提交之前是否有人有圖書館或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. Uploadify的客戶端驗證?
- 3. 驗證的RadioButtonGroup客戶端
- 4. 客戶端驗證的OpenERP
- 5. 使用客戶端證書進行智能卡身份驗證
- 6. 客戶端驗證MVC 5
- 7. jquery客戶端驗證asp.net
- 8. 驗證PayPal客戶端ID
- 9. Reactjs客戶端驗證
- 10. ASP.NET客戶端API驗證
- 11. 客戶端驗證疑惑
- 12. Telerik asp.net客戶端驗證
- 13. asp.net mvc客戶端驗證
- 14. 在客戶端驗證
- 15. Recaptcha客戶端驗證
- 16. 動態客戶端驗證
- 17. 客戶端驗證不MVC
- 18. ASP.NET MVC3客戶端驗證
- 19. QuickForm2 - 客戶端驗證
- 20. Silverlight - 客戶端驗證
- 21. Http驗證客戶端庫
- 22. 刪除客戶端驗證
- 23. 客戶端輸入驗證
- 24. asp.net客戶端驗證MicrosoftMvcJQueryValidation
- 25. Jmeter - 客戶端驗證
- 26. 設計客戶端驗證
- 27. MVC客戶端驗證
- 28. MVC3客戶端驗證區
- 29. ASP.NET CheckBoxList客戶端驗證
- 30. 客戶端驗證jQuery
爲什麼你會想用JavaScript來驗證信用卡信息? – 2008-11-01 03:16:58