博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用正则表达式
阅读量:5140 次
发布时间:2019-06-13

本文共 5032 字,大约阅读时间需要 16 分钟。

/** *  手机号码验证 * *  @param mobileNumbel 传入的手机号码 * *  @return 格式正确返回YES  错误 返回 NO */+ (BOOL) isMobile:(NSString *)mobileNumbel{    /**     * 手机号码     * 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188     * 联通:130,131,132,152,155,156,185,186     * 电信:133,1349,153,180,189,181(增加)     * 新增:14_,17_     */    NSString * MOBIL = @"^1(3[0-9]|4[0-9]|5[0-35-9]|7[0-9]|8[025-9])\\d{8}$";    /**     10         * 中国移动:China Mobile     11         * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188     12         */    NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[2378])\\d)\\d{7}$";    /**     15         * 中国联通:China Unicom     16         * 130,131,132,152,155,156,185,186     17         */    NSString * CU = @"^1(3[0-2]|5[256]|8[56])\\d{8}$";    /**     20         * 中国电信:China Telecom     21         * 133,1349,153,180,189,181(增加)     22         */    NSString * CT = @"^1((33|53|8[019])[0-9]|349)\\d{7}$";    NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBIL];    NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];    NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];    NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];    if (([regextestmobile evaluateWithObject:mobileNumbel]         || [regextestcm evaluateWithObject:mobileNumbel]         || [regextestct evaluateWithObject:mobileNumbel]         || [regextestcu evaluateWithObject:mobileNumbel])) {        return YES;    }    return NO;}/** *  密码验证 * *  @param password 传入的密码 6-16位 大小写数字 * *  @return 格式正确返回YES  错误 返回 NO */+ (BOOL) isPassword:(NSString *)password{    NSString *pwd = @"^[a-zA-Z0-9]{6,16}$";    NSPredicate *regextestPwd = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",pwd];    if ([regextestPwd evaluateWithObject:password]) {        return YES;    }    return NO;}/** *  邮箱验证 * *  @param email 传入的邮箱 * *  @return 格式正确返回YES  错误 返回 NO */+ (BOOL) isEmail:(NSString *)email{    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];    if ([emailTest evaluateWithObject:email]) {        return YES;    }    return NO;}/** *  身份证号验证 * *  @param identityCard 传入的身份证号 * *  @return 格式正确返回YES  错误 返回 NO */+ (BOOL) isIdentityCard: (NSString *)identityCard{    NSString *idnum = @"^(\\d{14}|\\d{17})(\\d|[xX])$";    NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",idnum];    return [identityCardPredicate evaluateWithObject:identityCard];}/** 银行卡号有效性问题Luhn算法 *  现行 16 位银联卡现行卡号开头 6 位是 622126~622925 之间的,7 到 15 位是银行自定义的, *  可能是发卡分行,发卡网点,发卡序号,第 16 位是校验码。 *  16 位卡号校验位采用 Luhm 校验方法计算: *  1,将未带校验位的 15 位卡号从右依次编号 1 到 15,位于奇数位号上的数字乘以 2 *  2,将奇位乘积的个十位全部相加,再加上所有偶数位上的数字 *  3,将加法和加上校验位能被 10 整除。 */+ (BOOL) isBankCardluhmCheck:(NSString *)bankNumber{    NSString * lastNum = [[bankNumber substringFromIndex:(bankNumber.length-1)] copy];//取出最后一位    NSString * forwardNum = [[bankNumber substringToIndex:(bankNumber.length -1)] copy];//前15或18位    NSMutableArray * forwardArr = [[NSMutableArray alloc] initWithCapacity:0];    for (int i=0; i
-1; i--) {//前15位或者前18位倒序存进数组 [forwardDescArr addObject:forwardArr[i]]; } NSMutableArray * arrOddNum = [[NSMutableArray alloc] initWithCapacity:0];//奇数位*2的积 < 9 NSMutableArray * arrOddNum2 = [[NSMutableArray alloc] initWithCapacity:0];//奇数位*2的积 > 9 NSMutableArray * arrEvenNum = [[NSMutableArray alloc] initWithCapacity:0];//偶数位数组 for (int i=0; i< forwardDescArr.count; i++) { NSInteger num = [forwardDescArr[i] intValue]; if (i%2) {//偶数位 [arrEvenNum addObject:[NSNumber numberWithInteger:num]]; }else{//奇数位 if (num * 2 < 9) { [arrOddNum addObject:[NSNumber numberWithInteger:num * 2]]; }else{ NSInteger decadeNum = (num * 2) / 10; NSInteger unitNum = (num * 2) % 10; [arrOddNum2 addObject:[NSNumber numberWithInteger:unitNum]]; [arrOddNum2 addObject:[NSNumber numberWithInteger:decadeNum]]; } } } __block NSInteger sumOddNumTotal = 0; [arrOddNum enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { sumOddNumTotal += [obj integerValue]; }]; __block NSInteger sumOddNum2Total = 0; [arrOddNum2 enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { sumOddNum2Total += [obj integerValue]; }]; __block NSInteger sumEvenNumTotal = 0 ; [arrEvenNum enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { sumEvenNumTotal += [obj integerValue]; }]; NSInteger lastNumber = [lastNum integerValue]; NSInteger luhmTotal = lastNumber + sumEvenNumTotal + sumOddNum2Total + sumOddNumTotal; return (luhmTotal%10 ==0)?YES:NO;}@end

转载于:https://www.cnblogs.com/xiao-love-meng/p/5757486.html

你可能感兴趣的文章
初探Oracle全栈虚拟机---GraalVM
查看>>
移动端的点击滚动逻辑实现。
查看>>
xpath
查看>>
parted分区
查看>>
抛出错误
查看>>
Can't play local SWF file in Media Player
查看>>
图片标签img
查看>>
JavaScript语言中文参考手册.chm
查看>>
表哥的Access入门++以Excel视角快速学习数据库知识pdf
查看>>
day29 jq
查看>>
TC 配置插件
查看>>
关于异步reset
查看>>
索引优先队列的工作原理与简易实现
查看>>
并发编程简介
查看>>
C++两水杯量出所需水量的小算法
查看>>
基于K-近邻分类算法的手写识别系统
查看>>
使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
查看>>
PC站跳转M站的方法
查看>>
wow 各职业体验(pvp)
查看>>
Streaming的receiver模式
查看>>