//
// ZFValidator.h
// MyStudyDemo
//
// Created by FranZhou on 16/7/18.
// Copyright © 2016年 kimree. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface ZFValidator : NSObject
/**
* 验证邮箱格式
*
* @param email
*
* @return
*/
+ (BOOL)isEmail:(NSString *)email;
/**
* 验证手机号
*
* @param phoneNum
*
* @return
*/
+ (BOOL)isMobilePhoneNumber:(NSString *)phoneNum;
/**
* 验证座机号码
*
* @param telephoneNum
*
* @return
*/
+ (BOOL)isTelephoneNumber:(NSString *)telephoneNum;
/**
* 验证身份证号码
*
* @param idNum
*
* @return
*/
+ (BOOL)isIdentityNumber:(NSString *)idNum;
/**
* 验证密码(数字字母组合,不能纯数字或纯字母)
*
* @param password
*
* @return
*/
+ (BOOL)isPassword:(NSString *)password;
/**
* 字符串验证
*
* @param str 要验证的字符串
* @param regexpStr 正则表达式
*
* @return
*/
+(BOOL)validateString:(NSString *) str withRegexp:(NSString *)regexpStr;
@end
ZFValidator.m
//
// ZFValidator.m
// MyStudyDemo
//
// Created by FranZhou on 16/7/18.
// Copyright © 2016年 kimree. All rights reserved.
//
#import "ZFValidator.h"
@implementation ZFValidator
/**
* 验证邮箱格式
*
* @param email
*
* @return
*/
+(BOOL)isEmail:(NSString *)email{
// 去空格处理
NSString *validatorStr = [email stringByReplacingOccurrencesOfString:@" " withString:@""];
NSString *regexpStr = @"\\w+(.\\w+)*@\\w+.\\w+";
return [self validateString:validatorStr withRegexp:regexpStr];
}
/**
* 验证手机号
*
* @param phoneNum
*
* @return
*/
+ (BOOL)isMobilePhoneNumber:(NSString *)phoneNum{
NSString *validatorStr = [phoneNum stringByReplacingOccurrencesOfString:@" " withString:@""];
NSString *regexpStr = @"^(1[3|4|5|8|7])[\\d]{9}$";
return [self validateString:validatorStr withRegexp:regexpStr];
}
/**
* 验证座机号码
*
* @param telephoneNum
*
* @return
*/
+ (BOOL)isTelephoneNumber:(NSString *)telephoneNum{
NSString *validatorStr = [telephoneNum stringByReplacingOccurrencesOfString:@" " withString:@""];
NSString *regexpStr = @"^(0\\d{2,3}-?)?\\d{7,8}$";
return [self validateString:validatorStr withRegexp:regexpStr];
}
/**
* 验证密码
*
* @param password
*
* @return
*/
+ (BOOL)isPassword:(NSString *)password{
NSString *validatorStr = [password stringByReplacingOccurrencesOfString:@" " withString:@""];
NSString *regexpStr = @"([A-Za-z]+\\d+\\w*)|(\\d+[A-Za-z]+\\w*)";
return [self validateString:validatorStr withRegexp:regexpStr];
}
/**
* 验证身份证号码
*
* @param idNum
*
* @return
*/
+ (BOOL)isIdentityNumber:(NSString *)idNum{
NSString *validatorStr = [idNum stringByReplacingOccurrencesOfString:@" " withString:@""];
NSString *regexpStr = @"^(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)|(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[Xx])$)$";
return [self validateString:validatorStr withRegexp:regexpStr];
}
/**
* 字符串验证
*
* @param str 要验证的字符串
* @param regexpStr 正则表达式
*
* @return
*/
+(BOOL)validateString:(NSString *) str withRegexp:(NSString *)regexpStr{
BOOL isMatch = NO;
NSError *error = nil;
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:regexpStr options:NSRegularExpressionAnchorsMatchLines error:&error];
if (error == nil) {
NSArray<NSTextCheckingResult *> *matches = [regex matchesInString:str options:NSMatchingAnchored range:NSMakeRange(0, str.length)];
for (NSTextCheckingResult *match in matches) {
NSRange range = match.range;
// 全匹配才算满足验证
if (range.location == 0 && range.length == str.length) {
isMatch = YES;
break;
}
}
}
return isMatch;
}
@end