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

This item was filled under [ 支付模块 ]

主要说了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>
Bookmark and Share
Tagged with: [ ]

喜欢这篇文章的人还喜欢。。。

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

One Comment on “验证信用卡号—Luhn算法(js高级程序设计)”

  • 16 January, 2010, 10:37

    不错,非常支持。

Leave a Comment