【ios】表單驗證工具
新建一個NSObject類,起一個工具類的名字,我的是QCTools
然後把下邊程式碼分 .h .m 檔案粘進去,結束
本表單工具主要包括
- 字串為空判斷
- 判斷是否為手機號
- 判斷時候為身份證號
- 判斷是否為郵箱
- 判斷是否為銀行卡號
- 按指定分隔符拆分字串
- 按指定分隔符拼接字串
.h檔案中定義類方法:
/*
判斷字串是否為空
*/
+(BOOL) isBlankString:(NSString *)string;
/*
判斷是否為手機號
*/
+(BOOL)isMobileNumber:(NSString*)mobileNum;
/*
判斷是否是身份證號
*/
+(BOOL)isIdCard:(NSString *)idCard;
/*
判斷是否為郵箱
*/
+(BOOL)isEmail:(NSString*)email;
/*
判斷是否為銀行卡號
*/
+(BOOL)isBankCard:(NSString *)cardNo;
/*
陣列=>字串 按指定分隔符拼接字串
*/
+(NSString*)jointStringBaseArr:(NSMutableArray*)arr BySeparator:(NSString *)sepa;
/*
字串=>陣列 按指定分隔符拆分字串
*/
+(NSArray*)splitString:(NSString *)string BySeparator:(NSString *)sepa;
.m檔案中方法實現
/*
字串為空判斷
*/
+(BOOL) isBlankString:(NSString *)string {
if (string == nil || string == NULL) {
return YES;
}
if ([string isKindOfClass:[NSNull class]]) {
return YES;
}
if ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) {
return YES;
}
return NO;
}
/*
手機號判斷
*/
+(BOOL)isMobileNumber:(NSString*)mobileNum {
// 電訊號段:133/153/180/181/189/177
// 聯通號段:130/131/132/155/156/185/186/145/176
// 移動號段:134/135/136/137/138/139/150/151/152/157/158/159/182/183/184/187/188/147/178
// 虛擬運營商:170
NSString *MOBILE = @"^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|7[06-8])\\d{8}$";
NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
return[regextestmobile evaluateWithObject:mobileNum];
}
/*
身份證判斷
*/
+(BOOL)isIdCard:(NSString *)identityCard{
//判斷是否為空
if (identityCard==nil||identityCard.length <= 0) {
return NO;
}
//判斷是否是18位,末尾是否是x
NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";
NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
if(![identityCardPredicate evaluateWithObject:identityCard]){
return NO;
}
//判斷生日是否合法
NSRange range = NSMakeRange(6,8);
NSString *datestr = [identityCard substringWithRange:range];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat : @"yyyyMMdd"];
if([formatter dateFromString:datestr]==nil){
return NO;
}
//判斷校驗位
if(identityCard.length==18)
{
NSArray *idCardWi= @[ @"7", @"9", @"10", @"5", @"8", @"4", @"2", @"1", @"6", @"3", @"7", @"9", @"10", @"5", @"8", @"4", @"2" ]; //將前17位加權因子儲存在數組裡
NSArray * [email protected][ @"1", @"0", @"10", @"9", @"8", @"7", @"6", @"5", @"4", @"3", @"2" ]; //這是除以11後,可能產生的11位餘數、驗證碼,也儲存成陣列
int idCardWiSum=0; //用來儲存前17位各自乖以加權因子後的總和
for(int i=0;i<17;i++){
idCardWiSum+=[[identityCard substringWithRange:NSMakeRange(i,1)] intValue]*[idCardWi[i] intValue];
}
int idCardMod=idCardWiSum%11;//計算出校驗碼所在陣列的位置
NSString *idCardLast=[identityCard substringWithRange:NSMakeRange(17,1)];//得到最後一位身份證號碼
//如果等於2,則說明校驗碼是10,身份證號碼最後一位應該是X
if(idCardMod==2){
if([idCardLast isEqualToString:@"X"]||[idCardLast isEqualToString:@"x"]){
return YES;
}else{
return NO;
}
}else{
//用計算出的驗證碼與最後一位身份證號碼匹配,如果一致,說明通過,否則是無效的身份證號碼
if([idCardLast intValue]==[idCardY[idCardMod] intValue]){
return YES;
}else{
return NO;
}
}
}
return NO;
}
/*
郵箱驗證
*/
+(BOOL)isEmail:(NSString *)email{
NSString *regex = @"^[a-zA-Z0-9_-][email protected][a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [emailTest evaluateWithObject:email];
}
/*
銀行卡號驗證
*/
+(BOOL)isBankCard:(NSString *)cardNo{
int oddsum = 0; //奇數求和
int evensum = 0; //偶數求和
int allsum = 0;
int cardNoLength = (int)[cardNo length];
int lastNum = [[cardNo substringFromIndex:cardNoLength-1] intValue];
cardNo = [cardNo substringToIndex:cardNoLength - 1];
for (int i = cardNoLength -1 ; i>=1;i--) {
NSString *tmpString = [cardNo substringWithRange:NSMakeRange(i-1, 1)];
int tmpVal = [tmpString intValue];
if (cardNoLength % 2 ==1 ) {
if((i % 2) == 0){
tmpVal *= 2;
if(tmpVal>=10)
tmpVal -= 9;
evensum += tmpVal;
}else{
oddsum += tmpVal;
}
}else{
if((i % 2) == 1){
tmpVal *= 2;
if(tmpVal>=10)
tmpVal -= 9;
evensum += tmpVal;
}else{
oddsum += tmpVal;
}
}
}
allsum = oddsum + evensum;
allsum += lastNum;
if((allsum % 10) == 0)
return YES;
else
return NO;
}
/*
按指定分隔符拼接字串
*/
+(NSString *)jointStringBaseArr:(NSMutableArray *)arr BySeparator:(NSString *)sepa{
int i = 0;
NSString *selectStr = [NSString new];
for (NSString *str in arr) {
if (str.length == 0 || [str isEqual:@""]) {
continue;
}
if (i == 0) {
selectStr = [NSString stringWithFormat:@"%@",str];
}
if (i > 0) {
selectStr = [NSString stringWithFormat:@"%@%@%@",selectStr,sepa,str];
}
i++;
}
return selectStr;
}
/*
按指定分隔符拆分字串
*/
+(NSArray *)splitString:(NSString *)string BySeparator:(NSString *)sepa{
NSString *str = string;
NSArray *arr= [str componentsSeparatedByString:sepa];
return arr;
}
打完收工,一切為了效率