判断手机,邮箱格式合法性
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;
}
}
//利用正则表达式验证
- (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;
}
}
相关文章推荐
- js判断手机,邮箱格式是否正确
- iOS 正则表达式判断邮箱格式,手机号码
- 判断字符串是否是邮箱或者手机号码格式
- JavaScript 判断用户输入的邮箱及手机格式是否正确
- 正则判断 手机邮箱的正确格式
- iOS开发正则表达式 判断手机号码,邮箱格式是否正确
- JavaScript 判断用户输入的邮箱及手机格式是否正确
- 判断邮箱,手机号码,身份证,用户名,昵称等输入格式是否正确的 正则表达式
- JavaScript 判断用户输入的邮箱及手机格式是否正确
- PHP正则判断手机号码格式/邮箱正则
- 判断字符数 中文 邮箱号 密码位数 手机格式 邮箱格式
- android 判断 手机号码、邮编、Email邮箱、是否正确
- java 判断邮箱和手机
- ios判断邮箱,手机号码,车牌号是否合法(正则表达)
- JS判断邮箱格式,密码输入是否一致,不能为空,长度控制等
- java实现判断邮箱格式
- 利用正则表达式判断手机号码格式是否合法
- Android 正则表达式验证手机和邮箱格式是否正确
- 判断字符串是否是邮箱的格式
- 判断域名格式合法性