JavaScript实现信用卡校验方法


Posted in Javascript onApril 07, 2015

本文实例讲述了JavaScript实现信用卡校验方法。分享给大家供大家参考。具体分析如下:

这里JavaScript版的信用卡校验代码,采用了Luhn算法

function isValidCreditCard(type, ccnum) {
  if (type == "Visa") {
   // Visa: length 16, prefix 4, dashes optional.
   var re = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/;
  } else if (type == "MC") {
   // Mastercard: length 16, prefix 51-55, dashes optional.
   var re = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
  } else if (type == "Disc") {
   // Discover: length 16, prefix 6011, dashes optional.
   var re = /^6011-?\d{4}-?\d{4}-?\d{4}$/;
  } else if (type == "AmEx") {
   // American Express: length 15, prefix 34 or 37.
   var re = /^3[4,7]\d{13}$/;
  } else if (type == "Diners") {
   // Diners: length 14, prefix 30, 36, or 38.
   var re = /^3[0,6,8]\d{12}$/;
  }
  if (!re.test(ccnum)) return false;
  // Remove all dashes for the checksum 
  //checks to eliminate negative numbers
  ccnum = ccnum.split("-").join("");
  // Checksum ("Mod 10")
  // Add even digits in even length strings 
  //or odd digits in odd length strings.
  var checksum = 0;
  for (var i=(2-(ccnum.length % 2)); i<=ccnum.length; i+=2) {
   checksum += parseInt(ccnum.charAt(i-1));
  }
  // Analyze odd digits in even length strings
  //or even digits in odd length strings.
  for (var i=(ccnum.length % 2) + 1; i<ccnum.length; i+=2) {
   var digit = parseInt(ccnum.charAt(i-1)) * 2;
   if (digit < 10) { checksum += digit; }
   else { checksum += (digit-9); }
  }
  if ((checksum % 10) == 0) return true; else return false;
}

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
window.name代替cookie的实现代码
Nov 28 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
Apr 05 Javascript
JS链式调用的实现方法
Mar 07 Javascript
JavaScript中数组继承的简单示例
Jul 29 Javascript
AngularJS实现表单手动验证和表单自动验证
Dec 09 Javascript
Bootstrap实现input控件失去焦点时验证
Aug 04 Javascript
javascript常用经典算法详解
Jan 11 Javascript
JS中from 表单序列化提交的代码
Jan 20 Javascript
解析vue中的$mount
Dec 21 Javascript
jquery.param()实现数组或对象的序列化方法
Oct 08 jQuery
通过cordova将vue项目打包为webapp的方法
Feb 02 Javascript
vue3语法糖内的defineProps及defineEmits
Apr 14 Vue.js
jQuery控制网页打印指定区域的方法
Apr 07 #Javascript
JavaScript使用指针操作实现约瑟夫问题实例
Apr 07 #Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
Apr 07 #Javascript
JavaScript中字符串分割函数split用法实例
Apr 07 #Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
Apr 07 #Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
Apr 07 #Javascript
JS 作用域与作用域链详解
Apr 07 #Javascript
You might like
destoon网站转移服务器后搜索汉字出现乱码的解决方法
2014/06/21 PHP
php实现字符串反转输出的方法
2015/03/14 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
学习YUI.Ext第五日--做拖放Darg&amp;Drop
2007/03/10 Javascript
Prototype RegExp对象 学习
2009/07/19 Javascript
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
jQuery表单对象属性过滤选择器实例详解
2016/09/13 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
2017/07/22 jQuery
angularjs路由传值$routeParams详解
2020/09/05 Javascript
深入浅析Vue.js计算属性和侦听器
2018/05/05 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
使用webpack将ES6转化ES5的实现方法
2019/10/13 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
[00:32]2018DOTA2亚洲邀请赛VG出场
2018/04/03 DOTA
[01:06]欢迎来到上海,TI9
2018/08/26 DOTA
什么是Python中的顺序表
2020/06/02 Python
keras.layer.input()用法说明
2020/06/16 Python
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
End Clothing美国站:英国男士潮牌商城
2018/04/20 全球购物
Prototype如何为一个Ajax添加一个参数
2015/12/06 面试题
考试作弊万能检讨书
2014/10/19 职场文书
降价通知函
2015/04/23 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
apache基于端口创建虚拟主机的示例
2021/04/24 Servers