美文网首页
常用公共类

常用公共类

作者: _源计划 | 来源:发表于2017-01-03 17:24 被阅读9次

连接:博客一

1、验证身份证号

+(BOOL)verifyIDnumber:(NSString *)IDnumber{

if (IDnumber.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:IDnumber]) 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 = [[IDnumber substringWithRange:NSMakeRange(i, 1)] integerValue];

NSInteger idCardWiIndex = [[idCardWiArray objectAtIndex:i] integerValue];

idCardWiSum+= subStrIndex * idCardWiIndex;

}

//计算出校验码所在数组的位置

NSInteger idCardMod=idCardWiSum%11;

//得到最后一位身份证号码

NSString *idCardLast= [IDnumber 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;

}

2、验证手机号

+ (BOOL)valiMobile:(NSString *)mobile{

mobile = [mobile stringByReplacingOccurrencesOfString:@" " withString:@""];

if (mobile.length != 11)

{

return NO;

}else{

/**

* 移动号段正则表达式

*/

NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";

/**

* 联通号段正则表达式

*/

NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";

/**

* 电信号段正则表达式

*/

NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";

NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];

BOOL isMatch1 = [pred1 evaluateWithObject:mobile];

NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];

BOOL isMatch2 = [pred2 evaluateWithObject:mobile];

NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];

BOOL isMatch3 = [pred3 evaluateWithObject:mobile];

if (isMatch1 || isMatch2 || isMatch3) {

return YES;

}else{

return NO;

}

}

}

3、根据银行卡号返回银行卡名称

- (NSString *)returnBankName:(NSString*) idCard{

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"bank" ofType:@"plist"];

NSDictionary* resultDic = [NSDictionary dictionaryWithContentsOfFile:plistPath];

NSArray *bankName = [resultDic objectForKey:@"bankName"];

NSArray *bankBin = [resultDic objectForKey:@"bankBin"];

int index = -1;

if(idCard==nil || idCard.length<16 || idCard.length>19){

return @"";

}

//6位Bin号

NSString* cardbin_6 = [idCard substringWithRange:NSMakeRange(0, 6)];

for (int i = 0; i < bankBin.count; i++) {

if ([cardbin_6 isEqualToString:bankBin[i]]) {

index = i;

}

}

if (index != -1) {

return bankName[index];

}

//8位Bin号

NSString* cardbin_8 = [idCard substringWithRange:NSMakeRange(0, 8)];

for (int i = 0; i < bankBin.count; i++) {

if ([cardbin_8 isEqualToString:bankBin[i]]) {

index = i;

}

}

if (index != -1) {

return bankName[index];

}

return @"";

}

相关文章

  • 常用公共类

    连接:博客一 1、验证身份证号 +(BOOL)verifyIDnumber:(NSString *)IDnumbe...

  • js 常用公共类封装

    /** * @用户信息缓存,公共js封装 * @Author maguangbo * @Date 2019-07-...

  • 二十二、各修饰符的使用细节

    常用来修饰类、方法、变量的修饰符如下: public 权限修饰符,公共访问 protected 权限修...

  • 对iOS开发的一些个人想法

    1、在iOS开发过程中,最常用到的比如UILabel、UIbutton...... 我们可以写一个公共类方法,在这...

  • net core WebApi——公用库April.Util公开

    前言 在之前鼓捣过一次基础工程April.WebApi后,就考虑把常用的类库打包做成一个公共类库,这样既方便维护也...

  • Java中的控制符修饰符总结

    类修饰符: public(公共访问控制符) 将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类...

  • django_form_表单字段速查

    一、表单常用的属性 大部分的类是继承Field所以大部分的标签都有公共的属性 use_required_attri...

  • okhttp 公共类

    http://blog.csdn.net/lmj623565791/article/details/4791108...

  • 栈和队列的链表实现

    1. 抽象基类 首先为每种数据结构定义一个公共的抽象基类, 并定义判空、判等、加法操作等常用基础接口. 2. 链式...

  • js常用方法使用总结

    说明: 1. 在项目中使用一些工具类,公共类是非常有必要的,不仅是后台,前段亦是一样 2. 这里提供我收集的常用方...

网友评论

      本文标题:常用公共类

      本文链接:https://www.haomeiwen.com/subject/ikjnvttx.html