您的位置:首页 > 移动开发 > IOS开发

iOS开发——正则表达式的应用

2015-11-24 16:26 417 查看
//判断手机号是否合法
- (BOOL)isPhoneNumber:(NSString *)phoneNum
{
    
    /**
     * 手机号码
     * 移动: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
     */
    NSString * MOBILE =
@"^1(3[0-9]|5[0-35-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[278])\\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
     22         */
    NSString * CT =
@"^1((33|53|8[09])[0-9]|349)\\d{7}$";
    /**
     25         * 大陆地区固话及小灵通
     26         * 区号:010,020,021,022,023,024,025,027,028,029
     27         * 号码:七位或八位
     28         */
    // NSString * PHS = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$";
    
    NSPredicate *regextestmobile = [NSPredicate
predicateWithFormat:@"SELF MATCHES %@", MOBILE];
    NSPredicate *regextestcm = [NSPredicate
predicateWithFormat:@"SELF MATCHES %@", CM];
    NSPredicate *regextestcu = [NSPredicate
predicateWithFormat:@"SELF MATCHES %@", CU];
    NSPredicate *regextestct = [NSPredicate
predicateWithFormat:@"SELF MATCHES %@", CT];
    
    if (([regextestmobile
evaluateWithObject:phoneNum] ==
YES)
        || ([regextestcm evaluateWithObject:phoneNum] ==
YES)
        || ([regextestct evaluateWithObject:phoneNum] ==
YES)
        || ([regextestcu evaluateWithObject:phoneNum] ==
YES))
    {
        if([regextestcm
evaluateWithObject:phoneNum] ==
YES) {
            NSLog(@"China Mobile");
        } else
if([regextestct evaluateWithObject:phoneNum] ==
YES) {
            NSLog(@"China Telecom");
        } else
if ([regextestcu evaluateWithObject:phoneNum] ==
YES) {
            NSLog(@"China Unicom");
        } else {
            NSLog(@"Unknow");
        }
        
        return
YES;
    }
    else
    {
        return
NO;
    }
}

 // 正则表达式过滤出数字
- (BOOL)validatePhone:(NSString *) textString
{
    NSString* number=@"^[0-9]+$";
    NSPredicate *numberPre = [NSPredicate
predicateWithFormat:@"SELF MATCHES %@",number];
    return [numberPre
evaluateWithObject:textString];
}

//用户名
    if (![self
validateUserName:self.UserName.text]) {
        UIAlertView* alert = [[UIAlertView
alloc] initWithTitle:nil
message:NSLocalizedString(@"用户名不合法",
nil) delegate:nil
cancelButtonTitle:@"取消"
otherButtonTitles:@"确定",
nil];
        [alert show];
        //用户名不对的话textfield自动清空
        //self.UserName.text = @"";
    }
   
 if (![self
validatePhone:self.phoneTF.text])
    {
        UIAlertController *alert = [UIAlertController
alertControllerWithTitle:@"手机号码请输入数字"
message:nil
preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction *confirm = [UIAlertAction
actionWithTitle:@"确认"
style:UIAlertActionStyleCancel
handler:nil];
        [alert addAction:confirm];
        [self
presentViewController:alert
animated:YES
completion:nil];
    }

验证数字的正则表达式集 

验证数字:^[0-9]*$
验证n位的数字:^\d{n}$
验证至少n位数字:^\d{n,}$
验证m-n位的数字:^\d{m,n}$
验证零和非零开头的数字:^(0|[1-9][0-9]*)$
验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
验证非零的正整数:^\+?[1-9][0-9]*$
验证非零的负整数:^\-[1-9][0-9]*$
验证非负整数(正整数 + 0)  ^\d+$
验证非正整数(负整数 + 0)  ^((-\d+)|(0+))$
验证长度为3的字符:^.{3}$
验证由26个英文字母组成的字符串:^[A-Za-z]+$
验证由26个大写英文字母组成的字符串:^[A-Z]+$
验证由26个小写英文字母组成的字符串:^[a-z]+$
验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
验证由数字、26个英文字母或者下划线组成的字符串:^\w+$
验证用户密码:^[a-zA-Z]\w{5,17}$
正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
验证是否含有 ^%&',;=?$\"
等字符:[^%&',;=?$\x22]+
验证汉字:^[\u4e00-\u9fa5],{0,}$
验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
验证身份证号(15位或18位数字):^\d{15}|\d{}18$
验证一年的12个月:^(0?[1-9]|1[0-2])$
正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$   
正确格式为:01、09和1、31。
整数:^-?\d+$
非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$
正浮点数   ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
负浮点数  ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数  ^(-?\d+)(\.\d+)?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息