首页 web前端 js教程 判断用户输入的银行卡号是否正确的方法_正则表达式

判断用户输入的银行卡号是否正确的方法_正则表达式

Jun 28, 2017 pm 01:39 PM
输入 银行

下面小编就为大家带来一篇判断用户输入的银行卡号是否正确的方法(基于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:@""]

以上是判断用户输入的银行卡号是否正确的方法_正则表达式的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

禁用Win11输入体验指南 禁用Win11输入体验指南 Dec 27, 2023 am 11:07 AM

最近有很多win11遇到了输入体验对话框总是闪烁,关也关不掉的问题,这其实是由于win11的默认系统服务和组件导致的,我们需要先禁用相关服务,再禁用输入体验服务就可以解决了,下面一起来试试看吧。win11输入体验怎么关闭:第一步,右键开始菜单,打开“任务管理器”第二步,依次找到“CTF加载程序”、“MicrosoftIME”和“服务主机:Textinputmanagementservice”三个进程,右键“结束任务”第三步,打开开始菜单,在上方搜索并打开“服务”第四步,在其中找到“Textinp

Windows输入遇到挂起或内存使用率高的问题[修复] Windows输入遇到挂起或内存使用率高的问题[修复] Feb 19, 2024 pm 10:48 PM

Windows的输入体验是一个关键的系统服务,负责处理来自各种人机接口设备的用户输入。它在系统启动时自动启动,在后台运行。然而,有时候这个服务可能会出现自动挂起或占用过多内存的情况,导致系统性能下降。因此,及时监控和管理这个进程是至关重要的,以确保系统的效率和稳定性。在这篇文章中,我们将分享如何解决Windows输入体验被挂起或导致内存使用率高的问题。Windows输入体验服务没有用户界面,但它与处理与输入设备相关的基本系统任务和功能有密切关联。它的作用是帮助Windows系统理解用户输入的每一

解决win11搜索栏输入问题 解决win11搜索栏输入问题 Dec 26, 2023 pm 12:07 PM

搜索栏是win11系统中非常好用的功能,可以帮助我们找到想要的设置、功能和服务等。但是有的朋友遇到了win11搜索栏无法输入的情况,我们可以在注册表中修改相关数据来解决,下面就跟着小编一起来解决一下吧。win11搜索栏无法输入怎么办1、首先我们可以按下键盘的“win+r”调出运行。2、然后在其中输入“regedit”回车确定打开注册表编辑器。3、然后在上方路径中输入“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Expl

word矩阵怎么输入 word矩阵怎么输入 Mar 19, 2024 pm 11:00 PM

矩阵是我们经常使用和遇到的公式,但是在word里如何输入矩阵你会操作吗?很多人可能没有接触过,遇到使用的时候就会感觉困惑,那么,这里我们就跟大家分享一下word矩阵怎么输入。希望经过这个技巧的分享,能够给你带来帮助和启发。1、首先,新建并打开一个word文档,为了演示操作,我们就使用空白文档进行演示。如下图所示:2、我们要输入矩阵,需要在菜单栏找到【插入】按钮,这个按钮可以插入很多内容选项,比如图片等都是从这个菜单栏完成。3、点击【插入】之后,我们工具选项右侧看,可以找到【公式】,然后我们点击【

C程序输入一个由空格分隔的整数序列的数组 C程序输入一个由空格分隔的整数序列的数组 Aug 25, 2023 am 11:33 AM

问题陈述编写一个C程序,以空格分隔的整数作为数组输入。SampleExamples输入12345输出‘Arrayelementsare-’1,2,3,4,5Explanation的中文翻译为:解释输入包含5个以空格分隔的整数。输入997687542356878967343423输出‘Arrayelementsare-’99,76,87,54,23,56,878,967,34,34,23Explanation的中文翻译为:解释输入包含11个以空格分隔的整数。方法一在这种方法中,我们将把输入中的以空

注意事项和示例:如何正确输入Python中的浮点数 注意事项和示例:如何正确输入Python中的浮点数 Feb 02, 2024 pm 06:34 PM

Python浮点型输入的注意事项及示例在Python中,浮点数是一种常见的数据类型,用于表示带有小数部分的数值。在进行浮点型输入时,有一些注意事项需要我们了解和注意,以确保输入的正确性和准确性。本文将介绍几个常见的注意事项,并提供示例代码以加深理解。浮点型的输入方式在Python中,浮点型的输入方式有多种,常见的有以下几种:直接使用浮点数进行输入:例如:x

PHP实践指南:如何判断输入只包含数字和字母 PHP实践指南:如何判断输入只包含数字和字母 Mar 28, 2024 pm 03:06 PM

在PHP编程中,有时候我们需要对用户输入的数据进行限制,比如判断输入是否只包含数字和字母。这在实际项目开发中经常会遇到,因此掌握如何实现这一功能非常重要。本文将介绍如何使用PHP来判断输入只包含数字和字母,并给出具体的代码示例。为什么需要判断输入只包含数字和字母?在网站开发中,用户输入的数据可能会被用于数据库操作、文件操作等重要功能,如果用户输入的数据包含特

韩国央行计划在明年开展数字货币试点,将有 10 万公民参与 韩国央行计划在明年开展数字货币试点,将有 10 万公民参与 Dec 02, 2023 am 09:25 AM

本站12月2日消息,国际清算银行总经理阿古斯丁・卡斯滕斯访问首尔的第二天,韩国央行(BOK)公布了数字货币(CBDC)试点计划的详细信息,表示将有10万名选定的韩国公民于明年第四季度加入试点。本站注意到,参与者能够使用商业银行发行的CBDC购买商品。韩国银行、金融委员会和金融监督院计划在与相关组织协商并审查相关法律后,为参与测试的银行提出联合试点任务,并为每家银行另外提出单独的任务。央行表示,数字货币可以解决现有凭单系统的问题,例如COVID-19期间使用的凭单系统或政府儿童保育补助金系统。图源

See all articles