验证信用卡号---Luhn算法(js高级程序设计)

主要说了MasterCard.

Luhn算法有四步:

1.从卡号的最后一个数字开市,并逆向将奇数位置的数字相加.

2.将奇数位置的数字先*2,如果是两位数,就将这两位数相加,然后将结果放到总和中.

3.将两个总和相加将结果与10取膜 ,如果整除,则为正确的MasterCard.

以下为检验方法:

  1. # <script>
  2. #  function isValidMasterCard(sText){
  3. #   var reMasterCard=/^(5[1-5]/d{2})[/s/-]?(/d{4})[/s/-]?(/d{4})[/s/-](/d{4})$/;
  4. #   
  5. #   if(reMasterCard.test(sText)){
  6. #    var sCardNum=RegExp.$1+RegExp.$2+RegExp.$3+RegExp.$4;   
  7. #     alert(sCardNum);   
  8. #    //Luhn algorithm here
  9. #    return luhnCheckSum(sCardNum);
  10. #   }else{
  11. #    return
  12. #   }
  13. #  }
  14. #  
  15. #  function luhnCheckSum(sCardNum){
  16. #   var iOddSum=0;
  17. #   var iEvenSum=0;
  18. #   var bIsOdd=true;
  19. #   
  20. #   for(var i=sCardNum.length-1;i>=0;i--){
  21. #   //alert("length="+sCardNum.length);
  22. #   //alert("sCardNum.char("+i+")="+sCardNum.charAt(i));
  23. #    var iNum=parseInt(sCardNum.charAt(i));
  24. #    
  25. #    if(bIsOdd){
  26. #    //反向奇數求和
  27. #     iOddSum+=iNum;   
  28. #     
  29. #    }else{
  30. #     //偶數  
  31. #     if(iNum>9){
  32. #      iNum=eval(iNum.toString().split("").join("+"));
  33. #     }
  34. #     iEvenSum+=iNum;
  35. #    
  36. #    }
  37. #    bIsOdd=!bIsOdd;
  38. #   }
  39. #    return ((iEvenSum+iOddSum)%10==0);
  40. #  }
  41. #  
  42. #  alert(isValidMasterCard("5432 1234 5678 9012"));
  43. #  alert(isValidMasterCard("5432-1234-5678-9012"));
  44. #  
  45. # </script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值