首頁 web前端 js教程 判斷身分證與銀行卡號格式的正規怎麼寫

判斷身分證與銀行卡號格式的正規怎麼寫

Mar 30, 2018 pm 02:47 PM
格式 身分證

这次给大家带来判断身份证与银行卡号格式的正则怎么写,使用判断身份证与银行卡号格式正则的注意事项有哪些,下面就是实战案例,一起来看一下。

1.有时候我们会用到上传身份证号,或者银行卡号,这个时候就需要我们对身份证号以及银行卡号,进行基本的判断。

下面便是身份证号的判断返回YES是合法,反之不合法

#pragma mark 判断身份证号是否合法
- (BOOL)judgeIdentityStringValid:(NSString *)identityString {
  if (identityString.length != 18) return NO;
  // 正则表达式判断基本 身份证号是否满足格式
  NSString *regex2 = @"^(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)|(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[Xx])$)$";
  NSPredicate *identityStringPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
  //如果通过该验证,说明身份证格式正确,但准确性还需计算
  if(![identityStringPredicate evaluateWithObject:identityString]) return NO;
  //** 开始进行校验 *//
  //将前17位加权因子保存在数组里
  NSArray *idCardWiArray = @[@"7", @"9", @"10", @"5", @"8", @"4", @"2", @"1", @"6", @"3", @"7", @"9", @"10", @"5", @"8", @"4", @"2"];
  //这是除以11后,可能产生的11位余数、验证码,也保存成数组
  NSArray *idCardYArray = @[@"1", @"0", @"10", @"9", @"8", @"7", @"6", @"5", @"4", @"3", @"2"];
  //用来保存前17位各自乖以加权因子后的总和
  NSInteger idCardWiSum = 0;
  for(int i = 0;i < 17;i++) {
    NSInteger subStrIndex  = [[identityString substringWithRange:NSMakeRange(i, 1)] integerValue];
    NSInteger idCardWiIndex = [[idCardWiArray objectAtIndex:i] integerValue];
    idCardWiSum      += subStrIndex * idCardWiIndex;
  }
  //计算出校验码所在数组的位置
  NSInteger idCardMod=idCardWiSum%11;
  //得到最后一位身份证号码
  NSString *idCardLast= [identityString substringWithRange:NSMakeRange(17, 1)];
  //如果等于2,则说明校验码是10,身份证号码最后一位应该是X
  if(idCardMod==2) {
    if(![idCardLast isEqualToString:@"X"]||[idCardLast isEqualToString:@"x"]) {
      return NO;
    }
  }else{
    //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
    if(![idCardLast isEqualToString: [idCardYArray objectAtIndex:idCardMod]]) {
      return NO;
    }
  }
  return YES;
}
登入後複製

在接下来便是银行卡号的的判断返回YES或者是真是合法,反之不合法

#pragma mark 判断银行卡号是否合法
-(BOOL)isBankCard:(NSString *)cardNumber{
  if(cardNumber.length==0){
    return NO;
  }
  NSString *digitsOnly = @"";
  char c;
  for (int i = 0; i < cardNumber.length; i++){
    c = [cardNumber characterAtIndex:i];
    if (isdigit(c)){
      digitsOnly =[digitsOnly stringByAppendingFormat:@"%c",c];
    }
  }
  int sum = 0;
  int digit = 0;
  int addend = 0;
  BOOL timesTwo = false;
  for (NSInteger i = digitsOnly.length - 1; i >= 0; i--){
    digit = [digitsOnly characterAtIndex:i] - '0';
    if (timesTwo){
      addend = digit * 2;
      if (addend > 9) {
        addend -= 9;
      }
    }
    else {
      addend = digit;
    }
    sum += addend;
    timesTwo = !timesTwo;
  }
  int modulus = sum % 10;
  return modulus == 0;
}
登入後複製

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

正则的数字验证详解(附代码)

JS正则表达式验证数字的实战归纳

以上是判斷身分證與銀行卡號格式的正規怎麼寫的詳細內容。更多資訊請關注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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

qq信箱格式怎麼寫 qq信箱格式是什麼樣的 qq信箱格式怎麼寫 qq信箱格式是什麼樣的 Feb 22, 2024 pm 03:40 PM

QQ信箱:QQ號@qq.com,英文QQ信箱:英文或數字@qq.com,foxmail信箱帳號:自行設定帳號@foxmail.com,手機信箱帳號:手機號碼@qq.com。教學適用型號:iPhone13系統:IOS15.3版本:QQ信箱6.3.3解析1QQ信箱有四種格式,常用的QQ信箱:QQ號@qq.com,英文QQ信箱:英文或數位@qq.com,foxmail信箱帳號:自己設定帳號@foxmail.com,手機信箱帳號:手機號碼@qq.com。補充:qq信箱是什麼1最早的QQ信箱還只是QQ使用者之間

ink是什麼文件格式 ink是什麼文件格式 Feb 03, 2023 pm 02:32 PM

ink是快捷方式的文件格式;快捷方式是一種功能上類似符號鏈接的文件對象,但與符號鏈接有本質的不同;快捷方式是普通的文件,而不是符號,其擴展名是“.lnk” ,因此快捷方式可以被複製、移動、更改或刪除;快捷方式可以指向文件、資料夾或其他任何系統中合法的位置。

如何在蘋果筆記中使用區塊引號 如何在蘋果筆記中使用區塊引號 Oct 12, 2023 pm 11:49 PM

在iOS17和macOSSonoma中,Apple為AppleNotes新增了新的格式選項,包括區塊引號和新的Monostyle樣式。以下是使用它們的方法。使用AppleNotes中的其他格式選項,您現在可以在筆記中新增區塊引用。區塊引用格式可以輕鬆地使用文字左側的引用欄直觀地偏移部分的寫作。只需點擊/點擊“Aa”格式按鈕,然後在鍵入之前或當您在要轉換為區塊引用的行上時選擇區塊引用選項。此選項適用於所有文字類型、樣式選項和列表,包括清單。在同一「格式」功能表中,您可以找到新的「單樣式」選項。這是對先前「等寬

cr3是什麼格式文件 cr3是什麼格式文件 Jun 23, 2021 pm 03:22 PM

CR3檔案是佳能採用Digic8影像處理器的新型相機所記錄的原始raw檔。 cr3的檔案可以透過佳能ddp打開,是對RAW影像進行「RAW顯像」等影像調節的軟體。

m3u8是什麼格式 m3u8是什麼格式 Feb 20, 2023 pm 01:38 PM

m3u8是UTF-8編碼格式。 M3U8是指UTF-8編碼的M3U文件,而M3U文件是記錄了一個索引純文本文件,打開它時播放軟體並不是播放它,而是根據它的索引找到對應的音視頻文件的網絡地址進行在線播放。 M3U8是一種常見的串流媒體格式,主要以檔案清單的形式存在,既支援直播又支援點播,尤其在Android、iOS等平台最為常用。

一張身分證可以開幾家淘寶店 一張身分證可以開幾家淘寶店 Oct 10, 2023 pm 01:51 PM

一個身分證只能開設一個淘寶店,賣家應該遵守淘寶平台的規定,不要嘗試使用其他人的身分證來開設多個店。賣家可以透過店鋪合併和開設分店的方式來拓展業務,提高銷售額。但是要注意的是,每家分店都需要使用獨立的身分證進行實名認證。

pptm是什麼格式 pptm是什麼格式 Jan 11, 2021 pm 02:46 PM

pptm是office辦公室套件中powerpoint的一種文件格式,全名是「啟用巨集的PowerPoint簡報」。 pptm檔案只能用2007以上版本的office軟體打開,如果用其他版本軟體開啟會出現無法編輯、圖片不完整等問題。

rtf是什麼格式 rtf是什麼格式 Jan 30, 2023 pm 02:35 PM

rtf全名為“Rich Text Format”,中文意思為“富文本格式”或“多文本格式”,是由微軟公司開發的跨平台文檔格式;RTF是word為了與其他字處理軟體兼容而能夠保存的文檔格式,是一種類似DOC格式(Word文件)的文件,有很好的兼容性。對一般使用者而言,RTF格式是一個很好的文件格式轉換工具,用於在不同應用程式之間進行格式化文字文件的傳送。

See all articles