正則匹配

#import

@interface Utils : NSObject

#pragma 正則匹配手機(jī)號(hào)

+ (BOOL)checkTelNumber:(NSString *) telNumber;

#pragma 正則匹配用戶密碼6-18位數(shù)字和字母組合

+ (BOOL)checkPassword:(NSString *) password;

#pragma 正則匹配用戶姓名,20位的中文或英文

+ (BOOL)checkUserName : (NSString *) userName;

#pragma 正則匹配用戶身份證號(hào)

+ (BOOL)checkUserIdCard: (NSString *) idCard;

#pragma 正則匹員工號(hào),12位的數(shù)字

+ (BOOL)checkEmployeeNumber : (NSString *) number;

#pragma 正則匹配URL

+ (BOOL)checkURL : (NSString *) url;

@end

.m實(shí)現(xiàn)文件:

////? Utils.m//? AutoSizing////? Created by yb on 15/2/7.//? Copyright (c) 2015年http://blog.csdn.net/yangbingbinga. All rights reserved.//#import Utils.h@implementation Utils#pragma 正則匹配手機(jī)號(hào)+ (BOOL)checkTelNumber:(NSString *) telNumber{? ? NSString *pattern = @^1+[3578]+\d{9};? ? NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern];? ? BOOL isMatch = [pred evaluateWithObject:telNumber];? ? return isMatch;}#pragma 正則匹配用戶密碼6-18位數(shù)字和字母組合+ (BOOL)checkPassword:(NSString *) password{? ? NSString *pattern = @^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,18};? ? NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern];? ? BOOL isMatch = [pred evaluateWithObject:password];? ? return isMatch;? ? }#pragma 正則匹配用戶姓名,20位的中文或英文+ (BOOL)checkUserName : (NSString *) userName{? ? NSString *pattern = @^[a-zA-Z一-龥]{1,20};? ? NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern];? ? BOOL isMatch = [pred evaluateWithObject:userName];? ? return isMatch;? ? }#pragma 正則匹配用戶身份證號(hào)15或18位+ (BOOL)checkUserIdCard: (NSString *) idCard{? ? NSString *pattern = @(^[0-9]{15}$)|([0-9]{17}([0-9]|X)$);? ? NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern];? ? BOOL isMatch = [pred evaluateWithObject:idCard];? ? return isMatch;}#pragma 正則匹員工號(hào),12位的數(shù)字+ (BOOL)checkEmployeeNumber : (NSString *) number{? ? NSString *pattern = @^[0-9]{12};? ? ? ? NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern];? ? BOOL isMatch = [pred evaluateWithObject:number];? ? return isMatch;? ? }#pragma 正則匹配URL+ (BOOL)checkURL : (NSString *) url{? ? NSString *pattern = @^[0-9A-Za-z]{1,50};? ? NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern];? ? BOOL isMatch = [pred evaluateWithObject:url];? ? return isMatch;? ? }@end

#pragma mark -正則表達(dá)式身份證校驗(yàn)

-(BOOL) validateIdentityCard: (NSString*)IDCardNumber

{

IDCardNumber = [IDCardNumberstringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]];

if([IDCardNumberlength] !=18)

{

NSLog(@"0");

returnNO;

}

NSString*mmdd =@"(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8])))";

NSString*leapMmdd =@"0229";

NSString*year =@"(19|20)[0-9]{2}";

NSString*leapYear =@"(19|20)(0[48]|[2468][048]|[13579][26])";

NSString*yearMmdd = [NSStringstringWithFormat:@"%@%@", year, mmdd];

NSString*leapyearMmdd = [NSStringstringWithFormat:@"%@%@", leapYear, leapMmdd];

NSString*yyyyMmdd = [NSStringstringWithFormat:@"((%@)|(%@)|(%@))", yearMmdd, leapyearMmdd,@"20000229"];

NSString*area =@"(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|82|[7-9]1)[0-9]{4}";

NSString*regex = [NSStringstringWithFormat:@"%@%@%@", area, yyyyMmdd ,@"[0-9]{3}[0-9Xx]"];

NSPredicate*regexTest = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", regex];

if(![regexTestevaluateWithObject:IDCardNumber])

{

NSLog(@"0");

returnNO;

}

intsummary = ([IDCardNumbersubstringWithRange:NSMakeRange(0,1)].intValue+ [IDCardNumbersubstringWithRange:NSMakeRange(10,1)].intValue) *7

+ ([IDCardNumbersubstringWithRange:NSMakeRange(1,1)].intValue+ [IDCardNumbersubstringWithRange:NSMakeRange(11,1)].intValue) *9

+ ([IDCardNumbersubstringWithRange:NSMakeRange(2,1)].intValue+ [IDCardNumbersubstringWithRange:NSMakeRange(12,1)].intValue) *10

+ ([IDCardNumbersubstringWithRange:NSMakeRange(3,1)].intValue+ [IDCardNumbersubstringWithRange:NSMakeRange(13,1)].intValue) *5

+ ([IDCardNumbersubstringWithRange:NSMakeRange(4,1)].intValue+ [IDCardNumbersubstringWithRange:NSMakeRange(14,1)].intValue) *8

+ ([IDCardNumbersubstringWithRange:NSMakeRange(5,1)].intValue+ [IDCardNumbersubstringWithRange:NSMakeRange(15,1)].intValue) *4

+ ([IDCardNumbersubstringWithRange:NSMakeRange(6,1)].intValue+ [IDCardNumbersubstringWithRange:NSMakeRange(16,1)].intValue) *2

+ [IDCardNumbersubstringWithRange:NSMakeRange(7,1)].intValue*1+ [IDCardNumbersubstringWithRange:NSMakeRange(8,1)].intValue*6

+ [IDCardNumbersubstringWithRange:NSMakeRange(9,1)].intValue*3;

NSIntegerremainder = summary %11;

NSString*checkBit =@"";

NSString*checkString =@"10X98765432";

checkBit = [checkStringsubstringWithRange:NSMakeRange(remainder,1)];//判斷校驗(yàn)位

[selfMBProgressHUDShowTextandTitle:[NSStringstringWithFormat:@"%d ",[checkBitisEqualToString:[[IDCardNumbersubstringWithRange:NSMakeRange(17,1)]uppercaseString]]]];

NSLog(@"%d....%@",[checkBitisEqualToString:[[IDCardNumbersubstringWithRange:NSMakeRange(17,1)]uppercaseString]],@"ss");

return[checkBitisEqualToString:[[IDCardNumbersubstringWithRange:NSMakeRange(17,1)]uppercaseString]];

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容