创建一个工具类,继承自NSObject,方便调用
.h文件(类方法)
#import <Foundation/Foundation.h>
@interface Utils : NSObject
#pragma mark- 正则匹配手机号
+ (BOOL)checkTelNumber:(NSString *) telNumber;
#pragma mark- 正则匹配用户密码6-18位数字和字母组合
+ (BOOL)checkPassword:(NSString *) password;
#pragma mark- 正则匹配用户姓名,20位的中文或英文
+ (BOOL)checkUserName : (NSString *) userName;
#pragma mark- 正则匹配用户身份证号
+ (BOOL)checkUserIdCard: (NSString *) idCard;
#pragma mark- 正则匹验证码,一般4位的数字
+ (BOOL)checkEmployeeNumber : (NSString *) number;
#pragma mark- 正则匹配用出生年月日
+ (BOOL)checkDateOfBirth:(NSString *)birth;
</br>
.m文件(方法实现)
#import "Utils.h"
@implementation Utils
#pragma mark- 正则匹配手机号
+ (BOOL)checkTelNumber:(NSString *) telNumber
{
// 目前已经包括了市面上所有手机运营商(包括虚拟运营商)
NSString *pattern = @"(134|135|136|137|138|139|150|151|152|157|158|159|182|183|184|187|178|188|147|1705|130|131|132|145|155|156|176|185|186|1709|133|153|177|180|181|189|134|1700)\\d{8}";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
BOOL isMatch = [pred evaluateWithObject:telNumber];
return isMatch;
}
#pragma mark- 正则匹配用户密码6-10位数字和字母组合({6,10}控制密码长度)
+ (BOOL)checkPassword:(NSString *) password
{
NSString *pattern = @"^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,10}";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
BOOL isMatch = [pred evaluateWithObject:password];
return isMatch;
}
#pragma mark- 正则匹配用户姓名,20位的中文或英文( 0-9 表示可以输入数字 {1,20} 表示控制长度)
+ (BOOL)checkUserName : (NSString *) userName
{
NSString *pattern = @"^[a-zA-Z0-9一-龥]{1,20}";
// 如下写法 添加 [a-zA-Z] 则表示必须要以字母开头
// NSString *pattern = @"^[a-zA-Z][a-zA-Z0-9一-龥]{1,20}";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
BOOL isMatch = [pred evaluateWithObject:userName];
return isMatch;
}
#pragma mark- 正则匹配用户身份证号15或18位
+ (BOOL)checkUserIdCard: (NSString *) idCard
{
NSString *pattern = @"[1-6][0-7][\\d]{4}((19[\\d]{2})|(20[0-1][\\d]))((0[1-9])|(1[0-2]))((0[1-9])|([1-2]\\d)|(3[0-1]))[\\d]{3}[\\dx|X]";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
BOOL isMatch = [pred evaluateWithObject:idCard];
return isMatch;
}
#pragma mark- 正则匹配验证码,一般4位的数字
+ (BOOL)checkEmployeeNumber : (NSString *) number
{
NSString *pattern = @"^[0-9]{4}";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
BOOL isMatch = [pred evaluateWithObject:number];
return isMatch;
}
#pragma mark- 正则匹配用出生年月日
+ (BOOL)checkDateOfBirth:(NSString *)birth
{
// 这里是用 / 来分隔年月日 ,最大能输入2019 格式如:1991/11/18
NSString *pattern = @"((19[\\d]{2})|(20[0-1][\\d]))/((0[1-9])|(1[0-2]))/((0[1-9])|([1-2]\\d)|(3[0-1]))";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
BOOL isMatch = [pred evaluateWithObject:birth];
return isMatch;
}
</br>
方法调用示例(在需要使用的地方包含头文件#import Utils.h)
if ([Utils checkDateOfBirth:@"1959/11/18"]) {
DLog(@"是出生年月日");
}else{
DLog(@"不是出生年月日");
}
}