在項目中,我們在驗證用戶的輸入,最簡單的方法就是使用正則表達式了,ios系統也提供很方便的方法,讓我們可以輕松的來驗證用戶名,密碼,身份證好 ,手機號等;
下面附上我在項目中用到的正則表達式的驗證方法,
由於比較常用,大家最好封裝成+靜態的方法,便於使用:
我把常用的方法,使用靜態方法封裝到一個 Utils類裡面,直接使用類名調用即可:
頭文件:
// // Utils.h // AutoSizing // // Created by yb on 15/2/7. // Copyright (c) 2015年 http://blog.csdn.net/yangbingbinga. All rights reserved. // #import.m實現文件:@interface Utils : NSObject #pragma 正則匹配手機號 + (BOOL)checkTelNumber:(NSString *) telNumber; #pragma 正則匹配用戶密碼6-18位數字和字母組合 + (BOOL)checkPassword:(NSString *) password; #pragma 正則匹配用戶姓名,20位的中文或英文 + (BOOL)checkUserName : (NSString *) userName; #pragma 正則匹配用戶身份證號 + (BOOL)checkUserIdCard: (NSString *) idCard; #pragma 正則匹員工號,12位的數字 + (BOOL)checkEmployeeNumber : (NSString *) number; #pragma 正則匹配URL + (BOOL)checkURL : (NSString *) url; @end
// // Utils.m // AutoSizing // // Created by yb on 15/2/7. // Copyright (c) 2015年 http://blog.csdn.net/yangbingbinga. All rights reserved. // #import Utils.h @implementation Utils #pragma 正則匹配手機號 + (BOOL)checkTelNumber:(NSString *) telNumber { NSString *pattern = @^1+[3578]+\d{9}; NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:telNumber]; return isMatch; } #pragma 正則匹配用戶密碼6-18位數字和字母組合 + (BOOL)checkPassword:(NSString *) password { NSString *pattern = @^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,18}; NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:password]; return isMatch; } #pragma 正則匹配用戶姓名,20位的中文或英文 + (BOOL)checkUserName : (NSString *) userName { NSString *pattern = @^[a-zA-Z一-龥]{1,20}; NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:userName]; return isMatch; } #pragma 正則匹配用戶身份證號15或18位 + (BOOL)checkUserIdCard: (NSString *) idCard { NSString *pattern = @(^[0-9]{15}$)|([0-9]{17}([0-9]|X)$); NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:idCard]; return isMatch; } #pragma 正則匹員工號,12位的數字 + (BOOL)checkEmployeeNumber : (NSString *) number { NSString *pattern = @^[0-9]{12}; NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:number]; return isMatch; } #pragma 正則匹配URL + (BOOL)checkURL : (NSString *) url { NSString *pattern = @^[0-9A-Za-z]{1,50}; NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:url]; return isMatch; } @end
原文地址:www.2cto.com
使用方法示例:
if ([Utils checkTelNumber:@18801112020]) //匹配結果,為YES { NSLog(@手機號格式正確); } else //匹配結果為NO { NSLog(@手機號格式錯誤); }