NSPredicate(谓语),验证邮箱、电话等用法(1)

来源:互联网 发布:ubuntu怎么连接服务器 编辑:程序博客网 时间:2024/05/16 13:05
////  NSObject+checkTool.h//  Created by  on 16/6/15.//  Copyright © 2016年 . All rights reserved.//#import <Foundation/Foundation.h>@interface NSObject (checkTool)/** *  邮箱验证 * *  @param email 邮箱 * *  @return YES:正确  NO:失败 */+ (BOOL) checkForEmail:(NSString *)email;/** *  手机号验证 * *  @param mobilePhone 手机号 * *  @return YES:正确  NO:失败 */+(BOOL)checkForMobilePhoneNo:(NSString *)mobilePhone;/** *  电话号验证 * *  @param phone 电话号 * *  @return 结果 */+(BOOL)checkForPhoneNo:(NSString *)phone;/** *  身份证号验证(15位 或 18位) * *  @param idCard 身份证号 * *  @return YES:正确  NO:失败 */+(BOOL)checkForIdCard:(NSString *)idCard;/** *  密码验证 * *  @param shortest 最短长度 *  @param longest  最长长度 *  @param pwd      密码 * *  @return 结果 */+(BOOL)checkForPasswordWithShortest:(NSInteger)shortest longest:(NSInteger)longest password:(NSString *)pwd;/** *  由数字和26个英文字母组成的字符串 * *  @param data 数据 * *  @return 结果 */+ (BOOL) checkForNumberAndCase:(NSString *)data;/** *  校验只能输入26位小写字母 * *  @param 数据 * *  @return 结果 */+ (BOOL) checkForLowerCase:(NSString *)data;/** *  校验只能输入26位大写字母 * *  @param data 数据 * *  @return 结果 */+ (BOOL) checkForUpperCase:(NSString *)data;/** *  校验只能输入由26个小写英文字母组成的字符串 * *  @param data 字符串 * *  @return 结果 */+ (BOOL) checkForLowerAndUpperCase:(NSString *)data;/** *  是否含有特殊字符(%&’,;=?$\等) * *  @param data 数据 * *  @return 结果 */+ (BOOL) checkForSpecialChar:(NSString *)data;/** *  校验只能输入数字 * *  @param number 数字 * *  @return 结果 */+ (BOOL) checkForNumber:(NSString *)number;/** *  校验只能输入n位的数字 * *  @param length n位 *  @param number 数字 * *  @return 结果 */+ (BOOL) checkForNumberWithLength:(NSString *)length number:(NSString *)number;@end
////  NSObject+checkTool.h//  Created by  on 16/6/15.//  Copyright © 2016年 . All rights reserved.//#import "NSObject+checkTool.h"@implementation NSObject (checkTool)// ✅方法是对的,正则表达式可能根据需求变更#pragma mark - 邮箱校验+(BOOL)checkForEmail:(NSString *)email{    NSString *regEx = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";    return [self baseCheckForRegEx:regEx data:email];}#pragma mark - 验证手机号+(BOOL)checkForMobilePhoneNo:(NSString *)mobilePhone{    NSString *regEx = @"^1[3|4|5|7|8][0-9]\\d{8}$";    return [self baseCheckForRegEx:regEx data:mobilePhone];}#pragma mark - 验证电话号+(BOOL)checkForPhoneNo:(NSString *)phone{    NSString *regEx = @"^(\\d{3,4}-)\\d{7,8}$";    return [self baseCheckForRegEx:regEx data:phone];}#pragma mark - 身份证号验证+ (BOOL) checkForIdCard:(NSString *)idCard{    NSString *regEx = @"\\d{14}[[0-9],0-9xX]";    return [self baseCheckForRegEx:regEx data:idCard];}#pragma mark - 密码校验+(BOOL)checkForPasswordWithShortest:(NSInteger)shortest longest:(NSInteger)longest password:(NSString *)pwd{    NSString *regEx =[NSString stringWithFormat:@"^[a-zA-Z0-9]{%ld,%ld}+$", shortest, longest];    return [self baseCheckForRegEx:regEx data:pwd];}//----------------------------------------------------------------------#pragma mark - 由数字和26个英文字母组成的字符串+ (BOOL) checkForNumberAndCase:(NSString *)data{    NSString *regEx = @"^[A-Za-z0-9]+$";    return [self baseCheckForRegEx:regEx data:data];}#pragma mark - 小写字母+(BOOL)checkForLowerCase:(NSString *)data{    NSString *regEx = @"^[a-z]+$";    return [self baseCheckForRegEx:regEx data:data];}#pragma mark - 大写字母+(BOOL)checkForUpperCase:(NSString *)data{    NSString *regEx = @"^[A-Z]+$";    return [self baseCheckForRegEx:regEx data:data];}#pragma mark - 26位英文字母+(BOOL)checkForLowerAndUpperCase:(NSString *)data{    NSString *regEx = @"^[A-Za-z]+$";    return [self baseCheckForRegEx:regEx data:data];}#pragma mark - 特殊字符+ (BOOL) checkForSpecialChar:(NSString *)data{    NSString *regEx = @"[^%&',;=?$\x22]+";    return [self baseCheckForRegEx:regEx data:data];}#pragma mark - 只能输入数字+ (BOOL) checkForNumber:(NSString *)number{    NSString *regEx = @"^[0-9]*$";    return [self baseCheckForRegEx:regEx data:number];}#pragma mark - 校验只能输入n位的数字+ (BOOL) checkForNumberWithLength:(NSString *)length number:(NSString *)number{    NSString *regEx = [NSString stringWithFormat:@"^\\d{%@}$", length];    return [self baseCheckForRegEx:regEx data:number];}#pragma mark - 私有方法/** *  基本的验证方法 * *  @param regEx 校验格式 *  @param data  要校验的数据 * *  @return YES:成功 NO:失败 */+(BOOL)baseCheckForRegEx:(NSString *)regEx data:(NSString *)data{    NSPredicate *card = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regEx];    if (([card evaluateWithObject:data])) {        return YES;    }    return NO;}@end
阅读全文
0 0
原创粉丝点击