首先是公共的方法
+(BOOL)predictTargetString:(NSString *)targetString AndExpression:(NSString *)regularExpression
{
NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regularExpression];
BOOL flag = [pre evaluateWithObject:targetString];
return flag;
}
下面是各种验证的实现
//手机号码
+(BOOL)isPhone:(NSString *)numString
{
BOOL flag=NO;
flag=[self predictTargetString:numString AndExpression:@"^[1][3578]+\\d{9}$"];
return flag;
}
//固定电话
+(BOOL)isTel:(NSString *)numString
{
BOOL flag=NO;
flag=[self predictTargetString:numString AndExpression:@"^0(10|2[0-5789]|\\d{3})\\d{7,8}$"];
return flag;
}
//密码形式:以字母开头,6-15位字母和数字的组合
+(BOOL)isPwd:(NSString *)numString
{
BOOL flag=NO;
flag=[self predictTargetString:numString AndExpression:@"^[a-zA-Z]{1}[a-zA-Z0-9]{5,14}+$"];
return flag;
}
//邮箱
+(BOOL)isEmail:(NSString *)numString
{
BOOL flag=NO;
flag=[self predictTargetString:numString AndExpression:@"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"];
return flag;
}
//身份证
+(BOOL)isIDCard:(NSString *)numString
{
BOOL flag=NO;
flag=[self predictTargetString:numString AndExpression:@"^(\\d{14}|\\d{17})(\\d|[xX])$"];
return flag;
}
//网址
+(BOOL)isURL:(NSString *)numString
{
BOOL flag=NO;
flag=[self predictTargetString:numString AndExpression:@"\\bhttps?://[a-zA-Z0-9\\-.]+(?::(\\d+))?(?:(?:/[a-zA-Z0-9\\-._?,'+\\&%$=~*!():@\\\\]*)+)?"];
return flag;
}
//邮政编码
+(BOOL)isZipCode:(NSString *)numString
{
BOOL flag=NO;
flag=[self predictTargetString:numString AndExpression:@"^[0-9]{6}"];
return flag;
}
使用示例:
if([Check isPhone:@"18825194182"]){//是手机号(Check是我新建的一个继承NSObject类,上面的代码都是放在此类中封装起来的)
}