iOS开发正则表达式,验证是否是邮箱,手机号,银行卡号,URL等等

这里是用的类扩展,封装了验证是否是邮箱,手机号,工商税号,身份证号,链接,车牌号等等功能.

.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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值