iOS开发 一些常用的正则表达式工具类

释放双眼,带上耳机,听听看~!

什么是正则表达式?

正则表达式的语法:

iOS中正则表达式与NSPredicate连用, 看一个过滤纯数字的例子:

- (BOOL)checkNumber:(NSString *) number{
NSString* number=@"^[0-9]+$";
NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",number];
return [numberPre evaluateWithObject:textString];
}
  • 其中下述语句就是一个正则表达式:
@"^[0-9]+$"
  • 封装的CheckDataTool类: .h文件
//
//  CheckDataTool.h
//  RegularExpression
//
//  Created by LiCheng on 16/6/12.
//  Copyright © 2016年 Li_Cheng. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface CheckDataTool : NSObject
/**
*  邮箱验证
*
*  @param email 邮箱
*
*  @return YES:正确  NO:失败
*/
+ (BOOL) checkForEmail:(NSString *)email;
/**
*  手机号验证
*
*  @param phone 手机号
*
*  @return YES:正确  NO:失败
*/
+(BOOL)checkForMobilePhoneNo:(NSString *)mobilePhone;
/**
*  电话号验证
*
*  @param phone 电话号
*
*  @return 结果
*/
+(BOOL)checkForPhoneNo:(NSString *)phone;
/**
*  身份证号验证(15位 或 18位)
*
*  @param idCard 身份证号
*
*  @return YES:正确  NO:失败
*/
+(BOOL)checkForIdCard:(NSString *)idCard;
/**
*  密码验证
*
*  @param shortest 最短长度
*  @param longest  最长长度
*  @param pwd      密码
*
*  @return 结果
*/
+(BOOL)checkForPasswordWithShortest:(NSString *)shortest longest:(NSString *)longest password:(NSString *)pwd;
/**
*  由数字和26个英文字母组成的字符串
*
*  @param idCard 数据
*
*  @return 结果
*/
+ (BOOL) checkForNumberAndCase:(NSString *)data;
/**
*  校验只能输入26位小写字母
*
*  @param 数据
*
*  @return 结果
*/
+ (BOOL) checkForLowerCase:(NSString *)data;
/**
*  校验只能输入26位大写字母
*
*  @param data 数据
*
*  @return 结果
*/
+ (BOOL) checkForUpperCase:(NSString *)data;
/**
*  校验只能输入由26个小写英文字母组成的字符串
*
*  @param data 字符串
*
*  @return 结果
*/
+ (BOOL) checkForLowerAndUpperCase:(NSString *)data;
/**
*  是否含有特殊字符(%&’,;=?$等)
*
*  @param data 数据
*
*  @return 结果
*/
+ (BOOL) checkForSpecialChar:(NSString *)data;
/**
*  校验只能输入数字
*
*  @param number 数字
*
*  @return 结果
*/
+ (BOOL) checkForNumber:(NSString *)number;
/**
*  校验只能输入n位的数字
*
*  @param length n位
*  @param number 数字
*
*  @return 结果
*/
+ (BOOL) checkForNumberWithLength:(NSString *)length number:(NSString *)number;
@end
  • .m文件
//
//  CheckDataTool.m
//  RegularExpression
//
//  Created by LiCheng on 16/6/12.
//  Copyright © 2016年 Li_Cheng. All rights reserved.
//
#import "CheckDataTool.h"
@implementation CheckDataTool
#pragma mark - 邮箱校验
+(BOOL)checkForEmail:(NSString *)email{
NSString *regEx = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}";
return [self baseCheckForRegEx:regEx data:email];
}
#pragma mark - 验证手机号
+(BOOL)checkForMobilePhoneNo:(NSString *)mobilePhone{
NSString *regEx = @"^1[3|4|5|7|8][0-9]\d{8}$";
return [self baseCheckForRegEx:regEx data:mobilePhone];
}
#pragma mark - 验证电话号
+(BOOL)checkForPhoneNo:(NSString *)phone{
NSString *regEx = @"^(\d{3,4}-)\d{7,8}$";
return [self baseCheckForRegEx:regEx data:phone];
}
#pragma mark - 身份证号验证
+ (BOOL) checkForIdCard:(NSString *)idCard{
NSString *regEx = @"(^[0-9]{15}$)|([0-9]{17}([0-9]|X)$)";
return [self baseCheckForRegEx:regEx data:idCard];
}
#pragma mark - 密码校验
+(BOOL)checkForPasswordWithShortest:(NSInteger)shortest longest:(NSInteger)longest password:(NSString *)pwd{
NSString *regEx =[NSString stringWithFormat:@"^[a-zA-Z0-9]{%ld,%ld}+$", shortest, longest];
return [self baseCheckForRegEx:regEx data:pwd];
}
//----------------------------------------------------------------------
#pragma mark - 由数字和26个英文字母组成的字符串
+ (BOOL) checkForNumberAndCase:(NSString *)data{
NSString *regEx = @"^[A-Za-z0-9]+$";
return [self baseCheckForRegEx:regEx data:data];
}
#pragma mark - 小写字母
+(BOOL)checkForLowerCase:(NSString *)data{
NSString *regEx = @"^[a-z]+$";
return [self baseCheckForRegEx:regEx data:data];
}
#pragma mark - 大写字母
+(BOOL)checkForUpperCase:(NSString *)data{
NSString *regEx = @"^[A-Z]+$";
return [self baseCheckForRegEx:regEx data:data];
}
#pragma mark - 26位英文字母
+(BOOL)checkForLowerAndUpperCase:(NSString *)data{
NSString *regEx = @"^[A-Za-z]+$";
return [self baseCheckForRegEx:regEx data:data];
}
#pragma mark - 特殊字符
+ (BOOL) checkForSpecialChar:(NSString *)data{
NSString *regEx = @"[^%&',;=?$x22]+";
return [self baseCheckForRegEx:regEx data:data];
}
#pragma mark - 只能输入数字
+ (BOOL) checkForNumber:(NSString *)number{
NSString *regEx = @"^[0-9]*$";
return [self baseCheckForRegEx:regEx data:number];
}
#pragma mark - 校验只能输入n位的数字
+ (BOOL) checkForNumberWithLength:(NSString *)length number:(NSString *)number{
NSString *regEx = [NSString stringWithFormat:@"^\d{%@}$", length];
return [self baseCheckForRegEx:regEx data:number];
}
#pragma mark - 私有方法
/**
*  基本的验证方法
*
*  @param regEx 校验格式
*  @param data  要校验的数据
*
*  @return YES:成功 NO:失败
*/
+(BOOL)baseCheckForRegEx:(NSString *)regEx data:(NSString *)data{
NSPredicate *card = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regEx];
if (([card evaluateWithObject:data])) {
return YES;
}
return NO;
}
@end

封装的一个校验的工具类, 包含了常见的信息验证, 有没有想到的大家可以积极补充!!!

本篇文章对应的源代码下载地址:CheckDataToolDemo

 

人已赞赏
iOS文章

iOS日常工作之常用宏定义收集

2020-5-15 18:01:54

iOS文章

iOS开发UITextFild/TextView限制字数(含联想词汇)

2020-5-15 19:17:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索