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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章