这里是用的类扩展,封装了验证是否是邮箱,手机号,工商税号,身份证号,链接,车牌号等等功能.
.h文件
#import <Foundation/Foundation.h>
@interface NSString (Validate)
/**
* 是否为空
*
* @return
*/
- (BOOL)isEmpty;
/**
* 长度位于min到max之间
*
* @param min
* @param max
*
* @return
*/
- (BOOL)betweenWith:(int)min and:(int)max;
/**
* 必须大于
*
* @param length
*
* @return
*/
- (BOOL)hasGreaterThanLength:(int)length;
/**
* 等于长度
*
* @param length
*
* @return
*/
- (BOOL)equalLength:(int)length;
/**
* 是否大于长度
*
* @param number
*
* @return
*/
- (BOOL)isGreaterThanNumber:(double)number;
/**
* 是否小于长度
*
* @param number
*
* @return
*/
- (BOOL)isLessThanNumber:(double)number;
/**
* 验证车牌号
*
* @return
*/
- (BOOL)isEqualToCardNumber;
/**
* 验证邮政编码
*
* @return
*/
- (BOOL)isEqualToPostalCode;
/**
* 验证IP
*
* @return
*/
- (BOOL)isEqualToIP;
/**
* 验证工商税号
*
* @return
*/
- (BOOL)isEqualToTaxNumber;
/**
* 是否是数字(不区分正负数)
*
* @return
*/
- (BOOL)isEqualToNumber;
/**
* 是否是小数(不区分正负数)
*
* @return
*/
- (BOOL)isEqualToDecimal;
/**
* 是否是11位手机号
*
* @return
*/
- (BOOL)isEqualToPhone;
/**
* 是否是国内电话号码,匹配形式如xxxx-xxxxxxx(xxxxxxxx)或xxx-xxxxxxxx
*
* @return
*/
- (BOOL)isEqualToTelPhone;
/**
* 是否是邮箱地址
*
* @return
*/
- (BOOL)isEqualToEmail;
/**
* 是否是URl
*
* @return
*/
- (BOOL)isEqualToURL;
/**
* 是否是中文名称
*
* @return
*/
- (BOOL)isEqualToCNName;
/**
* 是否是15位或18位身份证号码
*
* @return
*/
- (BOOL)isEqualToIdentity;
/**
* 匹配正则
*
* @param regex 正则表达式
*
* @return
*/
- (BOOL)isEqualToRegex:(NSString *)regex;
@end
.m文件
#import "NSString+Validate.h"
@implementation NSString (Validate)
- (BOOL)isEmpty
{
if (self.length < 1) {
return NO;
}
return ([self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]].length < 1);
}
- (BOOL)betweenWith:(int)min and:(int)max
{
if ([self isEmpty]) {
return NO;
}
return (self.length >= min && self.length < max);
}
- (BOOL)hasGreaterThanLength:(int)length
{
if ([self isEmpty]) {
return NO;
}
return self.length > length;
}
- (BOOL)equalLength:(int)length
{
if ([self isEmpty]) {
return NO;
}
return self.length == length;
}
- (BOOL)isGreaterThanNumber:(double)number
{
return [self doubleValue] > number;
}
- (BOOL)isLessThanNumber:(double)number
{
return [self doubleValue] < number;
}
- (BOOL)isEqualToCardNumber
{
return [self validateString:@"^[A-Za-z]{1}[A-Za-z_0-9]{5}$"];
}
- (BOOL)isEqualToPostalCode
{
return [self validateString:@"^[0-8]\\d{5}(?!\\d)$"];
}
- (BOOL)isEqualToIP
{
BOOL rc = [self validateString:@"^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$"];
if (rc) {
NSArray *componds = [self componentsSeparatedByString:@","];
BOOL v = YES;
for (NSString *s in componds) {
if (s.integerValue > 255) {
v = NO;
break;
}
}
return v;
}
return NO;
}
- (BOOL)isEqualToTaxNumber
{
return [self validateString:@"[0-9]\\d{13}([0-9]|X)$"];
}
- (BOOL)isEqualToNumber
{
return [self validateString:@"\\d+"];
}
- (BOOL)isEqualToDecimal
{
return [self validateString:@"\\d+(\\.\\d+)?"];
}
- (BOOL)isEqualToPhone
{
return [self validateString:@"1[3|4|5|7|8][0-9]{9}"];
}
- (BOOL)isEqualToTelPhone
{
return [self validateString:@"\\d{3}(-)?\\d{8}|\\d{4}(-)?\\d{7,8}"];
}
- (BOOL)isEqualToEmail
{
return [self validateString:@"\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"];
}
- (BOOL)isEqualToURL
{
return [self validateString:@"[http|https]+://[0-9a-zA-Z]+[0-9a-zA-Z.-]*.[a-zA-Z]{2,4}/?[^\\s]*"];
}
- (BOOL)isEqualToCNName
{
return [self validateString:@"[\\u4E00-\\u9FA5]{2,5}(?:·[\\u4E00-\\u9FA5]{2,5})*"];
}
- (BOOL)isEqualToIdentity
{
return [self validateString:@"\\d{15}|\\d{18}|\\d{17}[x|X]"];
}
- (BOOL)isEqualToRegex:(NSString *)regex
{
return [self validateString:regex];
}
- (BOOL)validateString:(NSString *)regex
{
if ([self isEmpty]) {
return NO;
}
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
BOOL result = [predicate evaluateWithObject:self];
return result;
}
@end