您的位置:首页 > 其它

判断手机,邮箱格式合法性

2012-08-28 11:13 183 查看
一、最简单的就是利用系统的NSPredicate

//利用正则表达式验证

- (BOOL)validateEmail:(NSString *)email
{
@"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
NSString *emailRegex = @"^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF
MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:email];
}

-(BOOL)validatePhone:(NSString *)phone
{
NSString *phoneRegex =@"\\b(1)[358][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\\b";
NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
return [phoneTest evaluateWithObject:phone];
}

if (![self validateEmail:self.addressTextField.text])
{
[TKLoadingView showTkloadingAddedTo:self.navigationController.view title:@"您输入的不是邮箱地址\n请重新输入"
activityAnimated:NO];
[TKLoadingView dismissTkFromView:self.navigationController.view animated:YES afterShow:2.0];
[self.addressTextField becomeFirstResponder];
return;
}

二、通过区分字符串

-(BOOL)validateEmail:(NSString*)email

{

if((0 != [email rangeOfString:@"@"].length) &&

(0 != [email rangeOfString:@"."].length))

{

NSCharacterSet* tmpInvalidCharSet = [[NSCharacterSet alphanumericCharacterSet] invertedSet];

NSMutableCharacterSet* tmpInvalidMutableCharSet = [[tmpInvalidCharSet mutableCopy] autorelease];

[tmpInvalidMutableCharSet removeCharactersInString:@"_-"];

/*

*使用compare option 来设定比较规则,如

*NSCaseInsensitiveSearch是不区分大小写

*NSLiteralSearch 进行完全比较,区分大小写

*NSNumericSearch 只比较定符串的个数,而不比较字符串的字面值

*/

NSRange range1 = [email rangeOfString:@"@"

options:NSCaseInsensitiveSearch];

//取得用户名部分

NSString* userNameString = [email substringToIndex:range1.location];

NSArray* userNameArray = [userNameString componentsSeparatedByString:@"."];

for(NSString* string in userNameArray)

{

NSRange rangeOfInavlidChars = [string rangeOfCharacterFromSet: tmpInvalidMutableCharSet];

if(rangeOfInavlidChars.length != 0 || [string isEqualToString:@""])

return NO;

}

//取得域名部分

NSString *domainString = [email substringFromIndex:range1.location+1];

NSArray *domainArray = [domainString componentsSeparatedByString:@"."];

for(NSString *string in domainArray)

{

NSRange rangeOfInavlidChars=[string rangeOfCharacterFromSet:tmpInvalidMutableCharSet];

if(rangeOfInavlidChars.length !=0 || [string isEqualToString:@""])

return NO;

}

return YES;

}

else {

return NO;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: