一般验证银行卡有效性用到一种叫做LUHN的算法,简介请参考这篇博客:基于Luhn算法的银行卡卡号的格式校验 注意: 1.LUHN算法只是能校验卡号是否有效,并不能校验卡号和用户名是否一致. 2.如果有部分银行卡不符合LUHN算法的话,也不用奇怪,有这种可能. 下面贴出JS实现的LUHN算法: /** * 检查银行卡号是否符合规则 * @param bankno 银行卡号 * @returns */ function checkBankNo(bankno) { var bankno = bankn…
<?php /* 16-19 位卡号校验位采用 Luhn 校验方法计算: 第一步:把信用卡号倒序(61789372994) 第二步:取出倒序后的奇数位置上的号码, 相加等到总和s1.(eg:s1=6+7+9+7+9+4=42) 第三步:取出倒序后的偶数位置上的号码,每个号码乘以2. (eg:2,16,6,4,18) 第四步:把第三步得到的大于10的号码转化为个位+十位.(eg:2,7,6,4,9) 第五步:把处理好的偶数位号码相加,得到s2. (eg:s2=2+7+6+4+9=28) 第六步:判…
开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS代码: /** *  银行卡格式校验 * *  @param cardNo 银行卡号 * *  @return */ + (BOOL) checkCardNo:(NSString*) cardNo{ int oddsum = 0;     //奇数求和 int evensum = 0;    //偶…
有时候在网上办理一些业务时有些需要填写银行卡号码,当胡乱填写时会立即报错,但是并没有发现向后端发送请求,那么这个效果是怎么实现的呢. 对于银行卡号有一个校验算法,叫做Luhn算法. 一.银行卡号码的校验规则 银行卡号码的校验采用Luhn算法,校验过程大致如下: 1. 从右到左给卡号字符串编号,最右边第一位是1,最右边第二位是2,最右边第三位是3-. 2. 从右向左遍历,对每一位字符t执行第三个步骤,并将每一位的计算结果相加得到一个数s. 3. 对每一位的计算规则:如果这一位是奇数位,则返回t本身…
问题描述: 2:信用卡号的验证 [信用卡号的验证] 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么 担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过 Luhn 算法来验 证通过. 该校验的过程: 1.从卡号最后一位数字开始,逆向将奇数位(1.3.5 等等)相加. 2.从卡号最后一位数字开始,逆向将偶数位数字,先乘以 2(如果乘积为两位 数,则将其减去 9),再求和. 3.将奇数位总和加上偶数位总和,结果应该可以被 10 整除. 例如,卡号是:543212345…
Luhn算法会通过校验码对一串数字进行验证,校验码通常会被加到这串数字的末尾处,从而得到一个完整的身份识别码. 我们以数字“7992739871”为例,计算其校验位: 从校验位开始,从右往左,偶数位乘2(例如,7*2=14),然后将两位数字的个位与十位相加(例如,10:1+0=1,14:1+4=5): 把得到的数字加在一起(本例中得到67): 将数字的和取模10(本例中得到7),再用10去减(本例中得到3),得到校验位. 另一种方法是: 从校验位开始,从右往左,偶数位乘2,然后将两位数字的个位与…
LUHN算法,主要用来计算信用卡等证件号码的合法性. 1.从卡号最后一位数字开始,偶数位乘以2,如果乘以2的结果是两位数,将两个位上数字相加保存. 2.把所有数字相加,得到总和. 3.如果信用卡号码是合法的,总和可以被10整除. 英文描述: 1.Counting from the check digit, which is the rightmost, and moving left, double the value of every second digit. 2.Sum the digit…
之前介绍了一些顺序数据结构,介绍的第一个非顺序数据结构是散列表.本章才会学习另一种非顺序数据结构--树,它对于存储需要快速寻找的数据非常有用. 本章内容 树的相关术语 创建树数据结构 树的遍历 添加和移除书的节点 AVL 树 第八章 树 树数据结构 树是一种分层数据的抽象模型.现实生活中最常见的树的典型例子就是家谱,或是公司的组织架构.如下图所示. 树的相关术语 一个树结构包含一系列存在父子关系的节点.每个节点都有一个父节点(除了顶部的第一个节点)已经零个或者多个子节点: 位于树顶部的节点叫做根…
本章学习使用字典和散列表来存储唯一值(不重复的值)的数据结构. 集合.字典和散列表可以存储不重复的值.在集合中,我们感兴趣的是每个值本身,并把它作为主要元素.而字典和散列表中都是用 [键,值]的形式来存储数据.但是两个数据结构的实现方式略有不同. 第七章 字典和散列表 字典 集合表示一组互不相同的元素(不重复的元素).在字典里,存储的是 [键,值] 对,其中键名是用来查询特定元素的.字典和结合很相似,集合以 [值,值] 的形式存储元素,字典则是以 [键,值]的形式来存储元素.字典也成为映射. 创…
前面已经学习了数组(列表).栈.队列和链表等顺序数据结构.这一章,我们要学习集合,这是一种不允许值重复的顺序数据结构. 本章可以学习到,如何添加和移除值,如何搜索值是否存在,也可以学习如何进行并集.交集.差集等数学操作,还可以学到如何使用ES6 原生的 Set类 第六章 集合 构建数据集合 集合是由一组无序且唯一(即不重复)的项组成的.这个数据结构使用了与有限集合相同的属性概念,但应用在计算机科学的数据结构中. 在数学中,集合时一组不同的对象(的集). 比如说,一个由大于或等于0 的整数组成的自…