您的位置:首页 > 移动开发 > IOS开发

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

2017-11-30 15:21 1361 查看
这里是用的类扩展,封装了验证是否是邮箱,手机号,工商税号,身份证号,链接,车牌号等等功能.

.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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息