正则使用的相关实例(判断邮箱,电话号码等)
2016-05-22 09:18
561 查看
转载自牛方健博客
.h文件
.m文件
.h文件
// // BCBaseObject.h // ChangQu // // Created by 牛 方健 on 13-4-17. // Copyright (c) 2013年 BC. All rights reserved. // #import <Foundation/Foundation.h> @interface BCBaseObject : NSObject /* * 用正则判断用户名,是否2-16位 */ + (BOOL) checkInputUserName:(NSString *)text; /* * 用正则判断邮箱 */ + (BOOL) checkInputEmail:(NSString *)text; /* * 用正则判断密码,是否6-16位 */ + (BOOL) checkInputPassword:(NSString *)text; /* * 得到字符串长度 中英文混合情况下 */ +(int)lengthToInt:(NSString*)string; /* * 将字符串进行MD5加密,返回加密后的字符串 */ + (NSString *) MD5Hash:(NSString*) aString; /* * 用正则判断手机号 */ + (BOOL)isMobileNumber:(NSString *)mobileNum; /* * URL解码 */ + (NSString *)URLDecodedString:(NSString*)stringURL; ///* // * 图片变灰 // */ //+ (UIImage *)grayscaleWithImage:(UIImage *)image; ///* // * 判断字符串是否是数字组成 // */ + (BOOL)isNumberStr:(NSString*)string; /* * 判断手机型号是否是iPhone5; */ + (BOOL)isiPhone5Height:(NSInteger)height; /* * 判断是否是身份证 * 需要-(BOOL)isNumberStr:(NSString*)string配合 */ +(BOOL)isPersonCard:(NSString*)string; /* * 判断String中是否都是数字 */ -(BOOL)isNumberStr:(NSString*)string; @end
.m文件
// // BCBaseObject.m // ChangQu // // Created by 牛 方健 on 13-4-17. // Copyright (c) 2013年 BC. All rights reserved. // #import "BCBaseObject.h" #import <CommonCrypto/CommonDigest.h> @implementation BCBaseObject /* * 用正则判断用户名,是否2-16位 */ + (BOOL) checkInputUserName:(NSString *)text { NSString *Regex = @"^\\w{2,16}$"; NSPredicate *userName = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", Regex]; return [userName evaluateWithObject:text]; } /* * 用正则判断邮箱 */ + (BOOL) checkInputEmail:(NSString *)text { NSString *Regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *email = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", Regex]; return [email evaluateWithObject:text]; } /* * 用正则判断密码,是否6-20位 */ + (BOOL) checkInputPassword:(NSString *)text { NSString *Regex = @"\\w{6,16}"; NSPredicate *password = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", Regex]; return [password evaluateWithObject:text]; } /* * 得到字符串长度 中英文混合情况下 */ +(int)lengthToInt:(NSString*)string; { //去掉空格 NSString *st = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; int strlength = 0; char* p = (char*)[st cStringUsingEncoding:NSUnicodeStringEncoding]; for (int i=0 ; i<[st lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++) { if (*p) { p++; strlength++; } else { p++; } } return strlength; } /* * 将字符串进行MD5加密,返回加密后的字符串 */ + (NSString *) MD5Hash:(NSString*) aString { const char *cStr = [aString UTF8String]; unsigned char result[16]; CC_MD5(cStr, (int )strlen(cStr), result); return [NSString stringWithFormat: @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7], result[8], result[9], result[10], result[11], result[12], result[13], result[14], result[15]]; } + (BOOL)isMobileNumber:(NSString *)mobileNum { /** * 手机号码 * 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188 * 联通:130,131,132,152,155,156,185,186 * 电信:133,1349,153,180,189 */ NSString * MOBILE = @"^1(3[0-9]|4[0-9]|5[0-35-9]|8[025-9])\\d{8}$"; /** 10 * 中国移动:China Mobile 11 * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188 12 */ NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[2378])\\d)\\d{7}$"; /** 15 * 中国联通:China Unicom 16 * 130,131,132,152,155,156,185,186 17 */ NSString * CU = @"^1(3[0-2]|5[256]|7[0-9]|8[56])\\d{8}$"; /** 20 * 中国电信:China Telecom 21 * 133,1349,153,180,189 22 */ NSString * CT = @"^1((33|53|8[09])[0-9]|349)\\d{7}$"; /** 25 * 大陆地区固话及小灵通 26 * 区号:010,020,021,022,023,024,025,027,028,029 27 * 号码:七位或八位 28 */ // NSString * PHS = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$"; NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE]; NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM]; NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU]; NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT]; if (([regextestmobile evaluateWithObject:mobileNum] == YES) || ([regextestcm evaluateWithObject:mobileNum] == YES) || ([regextestct evaluateWithObject:mobileNum] == YES) || ([regextestcu evaluateWithObject:mobileNum] == YES)) { return YES; } else { return NO; } } /* * URL解码 */ + (NSString *)URLDecodedString:(NSString*)stringURL { return (__bridge NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault, (CFStringRef)stringURL, CFSTR(""), kCFStringEncodingUTF8); } ///* // * 图片变灰 // */ //+ (UIImage *)grayscaleWithImage:(UIImage *)image //{ // CGSize size = image.size; // CGRect rect = CGRectMake(0.0f, 0.0f, image.size.width, image.size.height); // // CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); // CGContextRef context = CGBitmapContextCreate(nil, size.width, size.height, 8, 0, colorSpace, kCGImageAlphaNone); // CGColorSpaceRelease(colorSpace); // // CGContextDrawImage(context, rect, [image CGImage]); // CGImageRef grayscale = CGBitmapContextCreateImage(context); // CGContextRelease(context); // // UIImage * image1 = [UIImage imageWithCGImage:grayscale]; // CFRelease(grayscale); // // return image1; //} /* * 判断字符串是否是数字组成 */ + (BOOL)isNumberStr:(NSString*)string { NSString *number =@"0123456789"; NSCharacterSet * cs =[[NSCharacterSet characterSetWithCharactersInString:number]invertedSet]; NSString * comparStr = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""]; return [string isEqualToString:comparStr]; } /* * 判断手机型号是否是iPhone5; */ + (BOOL)isiPhone5Height:(NSInteger)height { if (height>481) { return YES; }else { return NO; } } /* * 判断是否是身份证 * 需要-(BOOL)isNumberStr:(NSString*)string配合 */ +(BOOL)isPersonCard:(NSString*)string { // NSLog(@"%d",[self length]); if ([string length]!= 15 && [string length] != 18) { return NO; } else if ( ([string length] == 18 ||[string length] ==15) && [self isNumberStr:string]) { return YES; } else if ([string length] == 18 && ([self isNumberStr:[string substringToIndex:17] ] && ([string hasSuffix:@"X"] || [string hasSuffix:@"x"]))) { return YES; } else { return NO; } // return [string isMatchedByRegex:@"^((1[1-5])|(2[1-3])|(3[1-7])|(4[1-6])|(5[0-4])|(6[1-5])|71|(8[12])|91)\\d{4}((19\\d{2}(0[13-9]|1[012])(0[1-9]|[12]\\d|30))|(19\\d{2}(0[13578]|1[02])31)|(19\\d{2}02(0[1-9]|1\\d|2[0-8]))|(19([13579][26]|[2468][048]|0[48])0229))\\d{3}(\\d|X|x)?$"]; } /* * 判断String中是否都是数字 */ -(BOOL)isNumberStr:(NSString*)string { NSString *number =@"0123456789"; NSCharacterSet * cs =[[NSCharacterSet characterSetWithCharactersInString:number]invertedSet]; NSString * comparStr = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""]; return [string isEqualToString:comparStr]; } @end
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- Java简单字符串插值实现
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- C# 正则判断一个数字的格式是否有逗号的代码
- C#常用正则大全分享
- 实例详解C#正则表达式
- php正则替换处理HTML页面的方法
- php的正则处理函数总结分析
- 正则方式的自动小偷抓网程序
- asp 去掉html中的table正则代码函数
- mysqlhotcopy 正则使用小技巧
- js下函数般调用正则的方法附代码
- php实现使用正则将文本中的网址转换成链接标签
- php下正则来匹配dede模板标签的代码
- 讲解iOS开发中基本的定位功能实现