正则表达式(系统)
第三方库正则表达式:用法http://see.xidian.edu.cn/cpp/html/1435.html //邮箱验证 - (BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@",emailRegex]; return [emailTest evaluateWithObject:email]; }
//用户名 - (BOOL)validateUserName:(NSString *)name { NSString *userNameRegex = @"^[A-Za-z0-9]{6,20}+$"; NSPredicate *userNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",userNameRegex]; BOOL B = [userNamePredicate evaluateWithObject:name]; return B; }
//昵称 - (BOOL)validateNickname:(NSString *)nickname { NSString *nicknameRegex = @"^[/u4e00-/u9fa5]{4,8}$"; NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",nicknameRegex]; return [passWordPredicate evaluateWithObject:nickname]; }
//密码 -(BOOL)validatePassword:(NSString *)passWord { NSString *passWordRegex = @"^[a-zA-Z0-9]{6,20}+$"; NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",passWordRegex]; return [passWordPredicate evaluateWithObject:passWord]; }
//身份证号 - (BOOL)validateIdentityCard:(NSString *)identityCard { BOOL flag; if (identityCard.length <= 0) { flag = NO; return flag; } NSString *regex2 = @"^(//d{14}|//d{17})(//d|[xX])$"; NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2]; return [identityCardPredicate evaluateWithObject:identityCard]; }
//手机号码验证 - (BOOL)validateMobile:(NSString *)mobile { //手机号以13, 15,18开头,八个 /d 数字字符 NSString *phoneRegex = @"^((13[0-9])|(15[^4,//D])|(18[0,0-9]))//d{8}$"; NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex]; return [phoneTest evaluateWithObject:mobile]; }
//车牌号验证 - (BOOL)validateCarNo:(NSString *)carNo { NSString *carRegex = @"^[/u4e00-/u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{4}[a-zA-Z_0-9_/u4e00-/u9fa5]$"; NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",carRegex]; NSLog(@"carTest is %@",carTest); return [carTest evaluateWithObject:carNo]; }
//车型 - (BOOL)validateCarType:(NSString *)CarType { NSString *CarTypeRegex = @"^[/u4E00-/u9FFF]+$"; NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",CarTypeRegex]; return [carTest evaluateWithObject:CarType]; }
//网址 - (BOOL)validateUrlString:(NSString *)urlString { NSString *urlStringRegex = @"^([a-zA-Z]+://)?([w-.]+)(.[a-zA-Z0-9]+)(:d{0,5})?/?([w-/]*).?([a-zA-Z]*)??(([w-]*=[w%]*&?)*)$"; NSPredicate *urlStringPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",urlStringRegex]; return [urlStringPredicate evaluateWithObject:urlString]; }
1.利用NSPredicate(谓词)匹配 例如匹配有效邮箱: NSString *email = @“nijino_saki@163.com”; NSString *regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}"; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex]; BOOLisValid = [predicate evaluateWithObject:email]; 谓词匹配比较灵活,但是需要有谓词的相关知识。
2.利用rangeOfString:option:直接查找
NSString *searchText = @"// Do any additional setup after loading the view,typically from a nib."; NSRange range = [searchText rangeOfString:@"(?:[^,])*." options:NSRegularExpressionSearch]; if (range.location != NSNotFound) { NSLog(@"%@",[searchText substringWithRange:range]); } options中设定NSRegularExpressionSearch就是表示利用正则表达式匹配,会返回第一个匹配结果的位置。
3.使用正则表达式类
NSString *searchText = @"// Do any additional setup after loading the view,typically from a nib."; NSError *error = NULL; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?:[^,])*." options:NSRegularExpressionCaseInsensitive error:&error]; NSTextCheckingResult *result = [regex firstMatchInString:searchText options:0 range:NSMakeRange(0,[searchText length])]; if (result) { NSLog(@"%@n",[searchText substringWithRange:result.range]); } 使用系统的正则表达式类(NSRegularExpression)会返回匹配的多个结果。
[(S*?)] #define FACE_ICON_NAME [(S*?)] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |