正则表达式.JPG
什么是正则表达式?正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式。正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分。它可以迅速地用极简单的方式达到字符串的复杂控制。
正则表达式的语法:iOS中正则表达式与NSPredicate连用,看一个过滤纯数字的例子:
-(BOOL)checkNumber:(NSString*)number{NSString*number=
^[0-9]+$;NSPredicate*numberPre=[NSPredicatepredicateWithFormat:SELFMATCHES%,number];return[numberPreevaluateWithObject:textString];}其中下述语句就是一个正则表达式:
^[0-9]+$封装的CheckDataTool类:.h文件////CheckDataTool.h//RegularExpression////CreatedbyLiChengon16/6/12.//Copyright?年Li_Cheng.Allrightsreserved.//#importFoundation/Foundation.h
interfaceCheckDataTool:NSObject/***邮箱验证**paramemail邮箱**returnYES:正确NO:失败*/+(BOOL)checkForEmail:(NSString*)email;/***手机号验证**paramphone手机号**returnYES:正确NO:失败*/+(BOOL)checkForMobilePhoneNo:(NSString*)mobilePhone;/***电话号验证**paramphone电话号**return结果*/+(BOOL)checkForPhoneNo:(NSString*)phone;/***身份证号验证(15位或18位)**paramidCard身份证号**returnYES:正确NO:失败*/+(BOOL)checkForIdCard:(NSString*)idCard;/***密码验证**paramshortest最短长度*paramlongest最长长度*parampwd密码**return结果*/+(BOOL)checkForPasswordWithShortest:(NSString*)shortestlongest:(NSString*)longestpassword:(NSString*)pwd;/***由数字和26个英文字母组成的字符串**paramidCard数据**return结果*/+(BOOL)checkForNumberAndCase:(NSString*)data;/***校验只能输入26位小写字母**param数据**return结果*/+(BOOL)checkForLowerCase:(NSString*)data;/***校验只能输入26位大写字母**paramdata数据**return结果*/+(BOOL)checkForUpperCase:(NSString*)data;/***校验只能输入由26个小写英文字母组成的字符串**paramdata字符串**return结果*/+(BOOL)checkForLowerAndUpperCase:(NSString*)data;/***是否含有特殊字符(%’,;=?$\等)**paramdata数据**return结果*/+(BOOL)checkForSpecialChar:(NSString*)data;/***校验只能输入数字**paramnumber数字**return结果*/+(BOOL)checkForNumber:(NSString*)number;/***校验只能输入n位的数字**paramlengthn位*paramnumber数字**return结果*/+(BOOL)checkForNumberWithLength:(NSString*)lengthnumber:(NSString*)number;end.m文件
////CheckDataTool.m//RegularExpression////CreatedbyLiChengon16/6/12.//Copyright?年Li_Cheng.Allrightsreserved.//#importCheckDataTool.h
implementationCheckDataTool#pragmamark-邮箱校验+(BOOL)checkForEmail:(NSString*)email{NSString*regEx=[A-Z0-9a-z._%+-]+[A-Za-z0-9.-]+\\.[A-Za-z]{2,4};return[selfbaseCheckForRegEx:regExdata:email];}#pragmamark-验证手机号+(BOOL)checkForMobilePhoneNo:(NSString*)mobilePhone{NSString*regEx=^1[34
5
7
8][0-9]\\d{8}$;return[selfbaseCheckForRegEx:regExdata:mobilePhone];}#pragmamark-验证电话号+(BOOL)checkForPhoneNo:(NSString*)phone{NSString*regEx=
^(\\d{3,4}-)\\d{7,8}$;return[selfbaseCheckForRegEx:regExdata:phone];}#pragmamark-身份证号验证+(BOOL)checkForIdCard:(NSString*)idCard{NSString*regEx=(^[0-9]{15}$)([0-9]{17}([0-9]
X)$);return[selfbaseCheckForRegEx:regExdata:idCard];}#pragmamark-密码校验+(BOOL)checkForPasswordWithShortest:(NSInteger)shortestlongest:(NSInteger)longestpassword:(NSString*)pwd{NSString*regEx=[NSStringstringWithFormat:
^[a-zA-Z0-9]{%ld,%ld}+$,shortest,longest];return[selfbaseCheckForRegEx:regExdata:pwd];}//----------------------------------------------------------------------#pragmamark-由数字和26个英文字母组成的字符串+(BOOL)checkForNumberAndCase:(NSString*)data{NSString*regEx=^[A-Za-z0-9]+$;return[selfbaseCheckForRegEx:regExdata:data];}#pragmamark-小写字母+(BOOL)checkForLowerCase:(NSString*)data{NSString*regEx=^[a-z]+$;return[selfbaseCheckForRegEx:regExdata:data];}#pragmamark-大写字母+(BOOL)checkForUpperCase:(NSString*)data{NSString*regEx=^[A-Z]+$;return[selfbaseCheckForRegEx:regExdata:data];}#pragmamark-26位英文字母+(BOOL)checkForLowerAndUpperCase:(NSString*)data{NSString*regEx=^[A-Za-z]+$;return[selfbaseCheckForRegEx:regExdata:data];}#pragmamark-特殊字符+(BOOL)checkForSpecialChar:(NSString*)data{NSString*regEx=[^%,;=?$\x22]+;return[selfbaseCheckForRegEx:regExdata:data];}#pragmamark-只能输入数字+(BOOL)checkForNumber:(NSString*)number{NSString*regEx=^[0-9]*$;return[selfbaseCheckForRegEx:regExdata:number];}#pragmamark-校验只能输入n位的数字+(BOOL)checkForNumberWithLength:(NSString*)lengthnumber:(NSString*)number{NSString*regEx=[NSStringstringWithFormat:^\\d{%}$,length];return[selfbaseCheckForRegEx:regExdata:number];}#pragmamark-私有方法/***基本的验证方法**paramregEx校验格式*paramdata要校验的数据**returnYES:成功NO:失败*/+(BOOL)baseCheckForRegEx:(NSString*)regExdata:(NSString*)data{NSPredicate*card=[NSPredicatepredicateWithFormat:SELFMATCHES%,regEx];if(([cardevaluateWithObject:data])){returnYES;}returnNO;}end白癜风治疗最好医院白癜风早期症状