在开发中我们经常会用到正则表达式去验证客户端输入的信息,下面是我收集到的一些常用的表达式,综合了一下:
#pragma mark - 手机号 校验
+ (BOOL)isValidateTelPhone:(NSString *)telphoneString;
#pragma mark - 电话号码,传真
+(BOOL)isValidatePhoneAndFax:(NSString *)phoneNumber;
#pragma mark - email 校验
+ (BOOL)isValidateEmail:(NSString *)emailString;
#pragma mark - 密码大小写英文字母和数字
+ (BOOL)isValidatePassword:(NSString *)string;
#pragma mark - 输入金额,只能是数字和小数点
+ (BOOL)isValidateAmount:(NSString *)string;
#pragma mark - 输入金额,只能是数字和小数点 全是正数
+(BOOL)isValidateAmountPositiveNum:(NSString *)string;
#pragma mark - 必须包含有数字和字母
+ (BOOL) isValidateWithStr: (NSString *)string;
#pragma mark - 只包含数字或字母:可以全是数字,也可以全是字母,还可以混合搭配。
+ (BOOL)isValidateNumLetter: (NSString *)string;
#pragma mark - 全是数字或全是字母
+ (BOOL)isOnlyNumOrLetter:(NSString *)string;
#pragma mark - 银行卡 校验 //2银行卡, 16、18、19 位数字
+ (BOOL)isValidateBankCard:(NSString *)string;
#pragma mark - 身份证识别码 百度百科
+(BOOL)checkIdentityCardNo:(NSString*)cardNo;
#pragma mark - 身份证 校验
+ (BOOL) isValidateIdentityCard: (NSString *)identityCard;
#pragma mark - 军官证 校验
+ (BOOL)isValidateOfficer:(NSString *)emailString;
#pragma mark - 护照 校验
+ (BOOL)isValidatePassport:(NSString *)string;
#pragma mark - 小于19位的数字 虚拟卡卡号校验
+ (BOOL)isValidateVCCard:(NSString *)string;
#pragma mark -/*车牌号验证 MODIFIED BY HELENSONG*/
+(BOOL) validateCarNo:(NSString* )carNo;
#pragma mark -/*用户名正则*/
+ (BOOL)validateUserName:(NSString *)userName;
#pragma mark -/*密码正则*/
+ (BOOL)validatePassword:(NSString *)password;
#pragma mark - 手机号 校验
+ (BOOL)isValidateTelPhone:(NSString *)telphoneString {
NSString *telRegex = @"(((13[0-9]{1})|(14[579]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+[0-9]{8})";
NSPredicate *regExPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", telRegex];
return [regExPredicate evaluateWithObject:telphoneString];
}
#pragma mark - 电话号码,传真
+(BOOL)isValidatePhoneAndFax:(NSString *)phoneNumber{
NSString *phoneNumberRegex = @"^[+]{0,1}(\\d){1,3}[ ]?([-]?((\\d)|[ ]){1,12})+$";
NSPredicate *regExPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneNumberRegex];
return [regExPredicate evaluateWithObject:phoneNumber] ;
}
#pragma mark - email 校验
+ (BOOL)isValidateEmail:(NSString *)emailString {
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *regExPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [regExPredicate evaluateWithObject:emailString] ;
}
#pragma mark - 密码大小写英文字母和数字
+ (BOOL)isValidatePassword:(NSString *)string
{
BOOL isExistDigit = ([string rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]].location != NSNotFound) ? YES : NO;
BOOL isExistLetter = ([string rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet]].location != NSNotFound) ? YES : NO;
return isExistDigit && isExistLetter;
}
#pragma mark - 输入金额,只能是数字或小数点
+(BOOL)isValidateAmount:(NSString *)string{
NSString *regex = @"^(-)?(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){1,2})?$";
NSPredicate *regExPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [regExPredicate evaluateWithObject:string] ;
}
+(BOOL)isValidateAmountPositiveNum:(NSString *)string{
NSString *regex = @"^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){1,2})?$";
NSPredicate *regExPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [regExPredicate evaluateWithObject:string];
}
#pragma mark - 必须包含有数字和字母
+ (BOOL) isValidateWithStr: (NSString *)string
{
BOOL flag;
if (string.length <= 0) {
flag = NO;
return flag;
}
NSString *regex = @"^(?![^0-9]+$)(?![^a-zA-Z]+$).+$";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
return [predicate evaluateWithObject:string];
}
#pragma mark - 只包含数字或字母:可以全是数字,也可以全是字母,还可以混合搭配。
+ (BOOL)isValidateNumLetter: (NSString *)string
{
BOOL flag;
if (string.length <= 0) {
flag = NO;
return flag;
}
NSString *regex = @"^[A-Za-z0-9]+$";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
return [predicate evaluateWithObject:string];
}
#pragma mark - 全是数字或全是字母
+ (BOOL)isOnlyNumOrLetter:(NSString *)string
{
NSString *regex = @"^\\d+|[a-zA-Z]+$";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
return [predicate evaluateWithObject:string];
}
#pragma mark - 银行卡 校验 //2银行卡, 16、18、19 位数字
+ (BOOL)isValidateBankCard:(NSString *)string
{
NSString *regex = @"^\\d{16}|\\d{18}|\\d{19}$";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
return [predicate evaluateWithObject:string];
}
#pragma mark - 小于19位的数字
+ (BOOL)isValidateVCCard:(NSString *)string
{
NSString *regex = @"^\\d{1,19}$";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
return [predicate evaluateWithObject:string];
}
#pragma mark - 身份证识别码 百度百科
+(BOOL)checkIdentityCardNo:(NSString*)cardNo
{
if (cardNo.length != 18) {
return NO;
}
NSArray* codeArray = [NSArray arrayWithObjects:@"7",@"9",@"10",@"5",@"8",@"4",@"2",@"1",@"6",@"3",@"7",@"9",@"10",@"5",@"8",@"4",@"2", nil];
NSDictionary* checkCodeDic = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"1",@"0",@"X",@"9",@"8",@"7",@"6",@"5",@"4",@"3",@"2", nil] forKeys:[NSArray arrayWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10", nil]];
NSScanner* scan = [NSScanner scannerWithString:[cardNo substringToIndex:17]];
int val;
BOOL isNum = [scan scanInt:&val] && [scan isAtEnd];
if (!isNum) {
return NO;
}
int sumValue = 0;
for (int i =0; i<17; i++) {
sumValue+=[[cardNo substringWithRange:NSMakeRange(i , 1) ] intValue]* [[codeArray objectAtIndex:i] intValue];
}
NSString* strlast = [checkCodeDic objectForKey:[NSString stringWithFormat:@"%d",sumValue%11]];
if ([strlast isEqualToString: [[cardNo substringWithRange:NSMakeRange(17, 1)]uppercaseString]]) {
return YES;
}
return NO;
}
#pragma mark - 身份证 校验
+ (BOOL) isValidateIdentityCard: (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];
}
#pragma mark - 军官证 校验
+ (BOOL)isValidateOfficer:(NSString *)emailString
{
NSString *emailRegex = @"^\\d{8}$";
NSPredicate *regExPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [regExPredicate evaluateWithObject:emailString] ;
}
#pragma mark - 护照 校验
+ (BOOL)isValidatePassport:(NSString *)string
{
NSString *regex = @"^(P\\d{7}|G\\d{8}|S\\d{7,8}|D\\d+|1[4,5]\\d{7})$";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
return [predicate evaluateWithObject:string];
}
#pragma mark -/*车牌号验证 MODIFIED BY HELENSONG*/
+(BOOL) validateCarNo:(NSString* )carNo
{
NSString *carRegex = @"^[A-Za-z]{1}[A-Za-z_0-9]{5}$";
NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",carRegex];
NSLog(@"carTest is %@",carTest);
return [carTest evaluateWithObject:carNo];
}
#pragma mark -/*用户名正则*/
+ (BOOL)validateUserName:(NSString *)name
{
NSString * nameReges = @"^[a-zA-Z\u4E00-\u9FA5][a-zA-Z0-9_\u4E00-\u9FA5]{5,19}$";
NSPredicate *check = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",nameReges];
NSLog(@"check is %@",check);
return [check evaluateWithObject:name];
}
#pragma mark -/*密码正则*/
+ (BOOL)validatePassword:(NSString *)password
{
NSString * psdReges = @"^[A-Za-z0-9,.;':\"!+-/=?>)(<&%^#]{6,20}$";
NSPredicate *check = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",psdReges];
NSLog(@"check is %@",check);
return [check evaluateWithObject:password];
}