在項目中,我們在驗證用戶的輸入,最簡單的方法就是使用正則表達式了,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(@手機號格式錯誤);
}