iOS 之常用正则表达式(二)

来源:互联网 发布:淘宝客佣金怎么算 编辑:程序博客网 时间:2024/06/05 03:57
z

//身份证正则

+(BOOL) IsIdentityCard:(NSString *)IDCardNumber

{

  for (int i=0; i<IDCardNumber.length; i++) {

    NSString *c=[NSStringstringWithFormat:@"%c",[IDCardNumbercharacterAtIndex:i]];

    if(![cisEqualToString:@"0"]&&![cisEqualToString:@"1"]&&![cisEqualToString:@"2"]&&![cisEqualToString:@"3"]&&![cisEqualToString:@"4"]&&![cisEqualToString:@"5"]&&![cisEqualToString:@"6"]&&![cisEqualToString:@"7"]&&![cisEqualToString:@"8"]&&![cisEqualToString:@"9"]){

        returnNO;

    }

}


    if (IDCardNumber.length <= 0) {

        returnNO;

    }

    NSString *regex2 =@"^(\\d{14}|\\d{17})(\\d|[xX])$";

    NSPredicate *identityCardPredicate = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",regex2];

    return [identityCardPredicateevaluateWithObject:IDCardNumber];

}


//手机号正则

+ (BOOL) IsPhoneNumber:(NSString *)number

{

    NSString *phoneRegex1=@"1[34578]([0-9]){9}";

    NSPredicate *phoneTest1 = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",phoneRegex1];

    return  [phoneTest1evaluateWithObject:number];

}


//银行卡正则

+ (BOOL) IsBankCard:(NSString *)cardNumber

{

 for (int i=0; i<IDCardNumber.length; i++) {

    NSString *c=[NSStringstringWithFormat:@"%c",[IDCardNumbercharacterAtIndex:i]];

    if(![cisEqualToString:@"0"]&&![cisEqualToString:@"1"]&&![cisEqualToString:@"2"]&&![cisEqualToString:@"3"]&&![cisEqualToString:@"4"]&&![cisEqualToString:@"5"]&&![cisEqualToString:@"6"]&&![cisEqualToString:@"7"]&&![cisEqualToString:@"8"]&&![cisEqualToString:@"9"]){

        returnNO;

    }

}

    if(cardNumber.length==0)

    {

        returnNO;

    }

    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;

}


#pragma mark --判断手机号合法性


+ (BOOL)checkPhone:(NSString *)phoneNumber


{

    

    NSString *regex =@"^((13[0-9])|(147)|(15[^4,\\D])|(18[0-9])|(17[0-9]))\\d{8}$";

    

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

    

    BOOL isMatch = [predevaluateWithObject:phoneNumber];

    

    if (!isMatch)

        

    {

        

        returnNO;

        

    }

    

    returnYES;

    

    

    

}



#pragma mark 判断邮箱


+ (BOOL)checkEmail:(NSString *)email{

    

    //^(\\w)+(\\.\\w+)*@(\\w)+((\\.\\w{2,3}){1,3})$

    

    NSString *regex =@"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";

    

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

    

    return [emailTestevaluateWithObject:email];

    

}


======手机运营商===

-(NSString *)JudgePhoneNumber:(NSString *)phoneNum

{

    //    NSString * MOBILE = @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";

    NSString * CM =@"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";

    NSString * CU =@"^1(3[0-2]|5[256]|8[56])\\d{8}$";

    NSString * CT =@"^1((33|53|8[09])[0-9]|349)\\d{7}$";

    // NSString * PHS = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$";

    //    NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];

    NSPredicate *regextestcm = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", CM];

    NSPredicate *regextestcu = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", CU];

    NSPredicate *regextestct = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", CT];

    if ([regextestcmevaluateWithObject:phoneNum] ==YES){

        //移动

        return@"中国移动";

    }elseif ([regextestctevaluateWithObject:phoneNum] ==YES){

        //电信

        return@"中国电信";

    }elseif ([regextestcuevaluateWithObject:phoneNum] ==YES){

        //联通

        return@"中国联通";

    }else{

        //可能还有未收录全的三大运营商号码,无法识别,后期会添加

    }

    return@"输入号码有误";

}



原创粉丝点击