iOS正则表达式验证用户名、密码、手机号码、身份证

释放双眼,带上耳机,听听看~!

iOS正则表达式验证用户名、密码、手机号码、身份证

//用户名

+ (BOOL) validateUserName:(NSString *)name

{

    NSString *userNameRegex =
@"^[A-Za-z0-9]{3,20}+$";

    NSPredicate *userNamePredicate = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",userNameRegex];

    BOOL B = [userNamePredicate
evaluateWithObject:name];

    return B;

}




//密码

+ (BOOL) validatePassword:(NSString *)passWord

{

    NSString *passWordRegex =
@"^[a-zA-Z0-9]{6,20}+$";

    NSPredicate *passWordPredicate = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",passWordRegex];

    return [passWordPredicate
evaluateWithObject:passWord];

}




//判断手机号码格式是否正确

+ (BOOL)valiMobile:(NSString *)mobile

{

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

    if (mobile.length !=
11)

    {

        returnNO;

    }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 = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", CM_NUM];

        BOOL isMatch1 = [pred1
evaluateWithObject:mobile];

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

        BOOL isMatch2 = [pred2
evaluateWithObject:mobile];

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

        BOOL isMatch3 = [pred3
evaluateWithObject:mobile];

        

        if (isMatch1 || isMatch2 || isMatch3) {

            returnYES;

        }else{

            returnNO;

        }

    }

}




/**

 *  验证身份证号码是否正确的方法

 *

 *  @param IDNumber 传进身份证号码字符串

 *

 *  @return 返回YES或NO表示该身份证号码是否符合国家标准

 */

+ (BOOL)isCorrect:(NSString *)IDNumber

{

    NSMutableArray *IDArray = [NSMutableArrayarray];

   
// 遍历身份证字符串,存入数组中

    if (IDNumber.length ==
18) {

        for (int i =
0; i < 18; i++) {

            NSRange range =
NSMakeRange(i, 1);

            NSString *subString = [IDNumber
substringWithRange:range];

            [IDArray addObject:subString];

        }

    }else{

        for (int i =
0; i < 15; i++) {

            NSRange range =
NSMakeRange(i, 1);

            NSString *subString = [IDNumber
substringWithRange:range];

            [IDArray addObject:subString];

        }

    }

    

    // 系数数组

    NSArray *coefficientArray = [NSArrayarrayWithObjects:@"7",
@"9", @"10",
@"5", @"8",
@"4", @"2",
@"1", @"6",
@"3", @"7",
@"9", @"10",
@"5", @"8",
@"4", @"2",
nil];

    // 余数数组

    NSArray *remainderArray = [NSArrayarrayWithObjects:@"1",
@"0", @"X",
@"9", @"8",
@"7", @"6",
@"5", @"4",
@"3", @"2",
nil];

   
// 每一位身份证号码和对应系数相乘之后相加所得的和

    int sum =
0;

    if (IDNumber.length ==
18) {

        for (int i =
0; i < 17; i++) {

            int coefficient = [coefficientArray[i]
intValue];

            int ID = [IDArray[i]
intValue];

            sum += coefficient * ID;

        }

    }else{

        for (int i =
0; i < 14; i++) {

            int coefficient = [coefficientArray[i]
intValue];

            int ID = [IDArray[i]
intValue];

            sum += coefficient * ID;

        }

    }

    

   
// 这个和除以11的余数对应的数

    NSString *str = remainderArray[(sum %
11)];

   
// 身份证号码最后一位

    NSString *string;

    if (IDNumber.length ==
18) {

        string = [IDNumber substringFromIndex:17];

    }else{

        string = [IDNumber substringFromIndex:14];

    }

    

   
// 如果这个数字和身份证最后一位相同,则符合国家标准,返回YES

    if ([str
isEqualToString:string]) {

        returnYES;

    } else {

        returnNO;

    }

}

 

人已赞赏
iOS文章

iOS时间与日期处理

2021-1-14 22:01:20

iOS文章

iOS中UITableView的cell点击事件不触发didSelectRowAtIndexPath

2021-1-14 23:16:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索