判断用户输入的银行卡号是否正确的方法(基于Luhn算法的格式校验)

开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验

下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验):

iOS代码:

/** * 银行卡格式校验 * * @param cardNo 银行卡号 * * @return */ + (BOOL) checkCardNo:(NSString*) cardNo{ int oddsum = 0; //奇数求和 int evensum = 0; //偶数求和 int allsum = 0; int cardNoLength = (int)[cardNo length]; int lastNum = [[cardNo substringFromIndex:cardNoLength-1] intValue]; cardNo = [cardNo substringToIndex:cardNoLength - 1]; for (int i = cardNoLength -1 ; i>=1;i--) { NSString *tmpString = [cardNo substringWithRange:NSMakeRange(i-1, 1)]; int tmpVal = [tmpString intValue]; if (cardNoLength % 2 ==1 ) { if((i % 2) == 0){ tmpVal *= 2; if(tmpVal>=10) tmpVal -= 9; evensum += tmpVal; }else{ oddsum += tmpVal; } }else{ if((i % 2) == 1){ tmpVal *= 2; if(tmpVal>=10) tmpVal -= 9; evensum += tmpVal; }else{ oddsum += tmpVal; } } } allsum = oddsum + evensum; allsum += lastNum; if((allsum % 10) == 0) return YES; else return NO; }

Androd代码:

/** * 匹配Luhn算法:可用于检测银行卡卡号 * @param cardNo * @return */ public static boolean matchLuhn(String cardNo) { int[] cardNoArr = new int[cardNo.length()]; for (int i=0; i<cardNo.length(); i++) { cardNoArr[i] = Integer.valueOf(String.valueOf(cardNo.charAt(i))); } for(int i=cardNoArr.length-2;i>=0;i-=2) { cardNoArr[i] <<= 1; cardNoArr[i] = cardNoArr[i]/10 + cardNoArr[i]%10; } int sum = 0; for(int i=0;i<cardNoArr.length;i++) { sum += cardNoArr[i]; } return sum % 10 == 0; }

附(银行卡号格式化):

在输入银行卡号过程中,通常,我们会每隔4位插入一个"-",类似"1332-2131-2313-1231-212"这种的格式
可以通过以下方法实现:

设置textField的代理

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *text = [textField text]; NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"]; string = [string stringByReplacingOccurrencesOfString:@"-" withString:@""]; if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) { return NO; } text = [text stringByReplacingCharactersInRange:range withString:string]; text = [text stringByReplacingOccurrencesOfString:@"-" withString:@""]; NSString *newString = @""; while (text.length > 0) { NSString *subString = [text substringToIndex:MIN(text.length, 4)]; newString = [newString stringByAppendingString:subString]; if (subString.length == 4) { newString = [newString stringByAppendingString:@"-"]; } text = [text substringFromIndex:MIN(text.length, 4)]; } newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]]; if (newString.length >= 24) { return NO; } [textField setText:newString]; return NO; }

最后,怎么获得不包含符号"-"的银行卡号呢?

[self.textField.text stringByReplacingOccurrencesOfString:@"-" withString:@""]

以上这篇判断用户输入的银行卡号是否正确的方法(基于Luhn算法的格式校验)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

时间: 2024-12-04 01:06:05

判断用户输入的银行卡号是否正确的方法(基于Luhn算法的格式校验)的相关文章

Javascript与PHP验证用户输入URL地址是否正确_php技巧

本文实例讲述了Javascript与PHP验证用户输入URL地址是否正确的方法,分享给大家供大家参考.具体方法如下: 1.javascript检测URL地址有效性: 复制代码 代码如下: <script type="text/javascript"> function checkUrl() {  var url = document.getElementById('url').value;  if (url==''){   alert('URL 地址不能为空');  ret

JavaScript 判断用户输入的邮箱及手机格式是否正确

 JavaScript判断用户输入的邮箱格式是否正确.判断用户输入的手机号格式是否正确,下面有个不错的示例,感兴趣的朋友可以参考下  代码如下: /*  * 功能:判断用户输入的邮箱格式是否正确  * 传参:无  * 返回值:true or false  */  function form_check() {  var email = document.getElementById("email").value; //获取邮箱地址  //判断邮箱格式是否正确  if(!/^w+([-+

JavaScript 判断用户输入的邮箱及手机格式是否正确_javascript技巧

复制代码 代码如下: /* * 功能:判断用户输入的邮箱格式是否正确 * 传参:无 * 返回值:true or false */ function form_check() { var email = document.getElementById("email").value; //获取邮箱地址 //判断邮箱格式是否正确 if(!/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(email)) { alert("邮箱格

js中判断用户输入的值是否为空的简单实例

 本篇文章主要是对js中判断用户输入的值是否为空的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 在js中判断用户输入的值是否为空,这是大家用得非常多的. 这没有什么好写的. 而我却写了. 原因只是自以为是的认为我的这些代码写得不错, 供大家参考一下.   这是摘自的我一个项目的中的用户注册页面.对于大多数人来说,这都几乎是100%经历过的. 贴代码吧,这些代码都是用js写的. 不难,很容易看懂. 看的时候,只要区别两个js类就行了. 前台页面代码:reguser.aspx  

VB.NET WEB页面中,有一个Textbox框,我让用户输入的是2008/12/06 类似的日期,如何判断用户输入的正确性!

问题描述 VB.NETWEB页面中,有一个Textbox框,我让用户输入的是2008/12/06类似的日期,如何判断用户输入的正确性!如果不正确,则给出一个提示,并让光标仍然停留在textbox中并全选.请问如何做呢?谢谢! 解决方案 解决方案二:你这样很难验证,情况太多了,为何不用时间控件呢.AjaxToolkit中的Canlender控件,可以设定时间格式,不用自己验证了,而且很容易设置.解决方案三:用CompareValidator验证控件!!解决方案四:验证控件方便些解决方案五:这是一个

js中判断用户输入的值是否为空的简单实例_javascript技巧

在js中判断用户输入的值是否为空,这是大家用得非常多的. 这没有什么好写的. 而我却写了. 原因只是自以为是的认为我的这些代码写得不错, 供大家参考一下. 这是摘自的我一个项目的中的用户注册页面.对于大多数人来说,这都几乎是100%经历过的.贴代码吧,这些代码都是用js写的. 不难,很容易看懂. 看的时候,只要区别两个js类就行了.前台页面代码:reguser.aspx 复制代码 代码如下: <%@ Page language="c#" Codebehind="RegU

字符处理-判断用户输入的是一个单词,还是多个单词,用什么方法好点

问题描述 判断用户输入的是一个单词,还是多个单词,用什么方法好点 判断一个用户的输入是一个单词,还是多个单词,是去判断里面的空格好呢,还是用正则去判断... 解决方案 判读空格吧 正则表达式不好进行判断 解决方案二: 感觉判断里面的空格好,两空格之间有值的为一个单词,比较通用-- 解决方案三: 用空格比较简单一些 复杂的匹配要求可以用正则 解决方案四: 用正则不是还是判断是不是有空格么 s 难道还有别的 解决方案五: 如果没有什么特殊的要求,用空格来判断比较好! 解决方案六: 一般编程语言中包含

怎么判断用户输入的文章中的其中一部分是代码?

问题描述 请问怎么判断用户输入的文章中的其中一部分是编程语言代码?怎么判断是代码的开始,代码的结束?我想为代码部分做特别显示,例如做一个框框,再加行号等等 解决方案 解决方案二:你学csdn在回复的时候就让用户自己标注哪些是代码模块多好解决方案三:学学csdn--解决方案四:在网页中自动判断代码从哪里开始可不行,csdn也是用户手工输入的代码,然后给代码指定css格式而已.特别的显示需要使用css,请参考csdn.解决方案五:[code][/code]只能这么干解决方案六:在输入的时候弄个标记,

if else判断用户输入

问题描述 怎样用if--else语句写一个判断用户输入的是数字还是字符串,急,谢谢 解决方案 解决方案二:JS用内置函数:isNaN解决方案三:importjavax.swing.*;publicclassLast27{publicstaticvoidmain(Stringargs[]){int[]a=newint[10];Stringcount="0123456789";for(inti=0;i<10;i++){Stringimput=JOptionPane.showInput