正则表达式(一)

本文提供了一系列使用正则表达式进行数据验证的方法,包括用户名、密码、手机号码等常见场景的验证规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 验证用户名
/**
 *  验证用户名
 *  由字母、数字、_、-组成,不能以符号开始和结束
 *  6~14
 */
 * (BOOL)checkInputUserName:(NSString *)text
{
    NSString *regular = @"^[a-zA-Z\\d][\\w-]{4,12}[0-9a-zA-Z]$";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regular];
    return [predicate evaluateWithObject:text];
}
  • 验证密码
/**
 *  验证密码
 *  由字母、数字、_、-、~、!、@、#、$、%、^、&、*、+、,、.、?组成
 *  6~16
 */
 * (BOOL)checkInputPassword:(NSString *)text
{
    NSString *regular = @"^[\\w!@#$%^&*+?,.~\\-]{6,16}$";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regular];
    return [predicate evaluateWithObject:text];
}
  • 只能输入汉字
/**
 *  只能输入汉字
 */
 * (BOOL)checkInputChinese:(NSString *)text
{
    NSString *regular = @"^[\u4e00-\u9fa5]*$";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regular];
    return [predicate evaluateWithObject:text];
}
  • 只能输入字母
/**
 *  只能输入字母
 */
 * (BOOL)checkInputLetter:(NSString *)text
{
    NSString *regular = @"^[a-zA-Z]*$";
    return [self check:regular text:text];
}
  • 只能输入数字
/**
 *  只能输入数字
 */
 * (BOOL)checkInputNumber:(NSString *)text
{
    NSString *regular = @"^[0-9]*$";
    return [self check:regular text:text];
}
  • 手机号码
/**
 *  手机号码
 *中国移动号段:134、135、136、137、138、139、150、151、152、157、158、159、147、182、183、184、187、188、1705、178
 中国联通号段:130、131、132、145(145属于联通无线上网卡号段)、155、156、185、186 、176、1709、
 中国电信号段:133 、153 、180 、181 、189、1700、177
 */
 * (BOOL)checkInputPhoneNumber:(NSString *)text
{
    NSString *YDRegular = @"^1((3[4-9]|5[0-27-9]|47|8[23478]|78)\\d{8}|705\\d{7})$";
    NSString *LTRegular = @"^1((3[0-2]|45|5[56]|8[56]|76)[0-9]|709)\\d{7}$";
    NSString *DXRegular = @"^1((33|53|8[019]|77)[0-9]|700)\\d{7}$";
    return [self check:YDRegular text:text] || [self check:LTRegular text:text] || [self check:DXRegular text:text];
}
  • 身份证
/**
 *  身份证
 */
+ (BOOL)checkInputIdCard:(NSString *)text
{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyyMMdd HH:mm:ss"];
    NSString *time = [formatter stringFromDate:[NSDate date]];
    time = [time substringToIndex:8];
    NSString *newText = [text substringWithRange:NSMakeRange(6, 8)];
    if ([newText integerValue] > [time integerValue]) {
        return NO;
    }
    if (text.length != 18) {
        return NO;
    }
    BOOL isIdCard;
    NSString *regular = @"^[1-9]\\d{5}(19[0-9]{2}|201[0-6])(0[1-9]|1[0-2])([0|1|2]\\d|(3[0-1]))(\\d{4}|\\d{3}[Xx])$";
    if ([self check:regular text:text] && text.length == 18) {
        NSArray *idCardWi = @[@"7",@"9",@"10",@"5",@"8",@"4",@"2",@"1",@"6",@"3",@"7",@"9",@"10",@"5",@"8",@"4",@"2"];
        NSArray *idCardY = @[@"1",@"0",@"10",@"9",@"8",@"7",@"6",@"5",@"4",@"3",@"2"];
        NSInteger num = 0;
        for (NSInteger index = 0; index < text.length - 1; index++) {
            num += [[text substringWithRange:NSMakeRange(index, 1)] integerValue] * [idCardWi[index] integerValue];
        }
        num = num % 11;
        if ([[text substringFromIndex:text.length - 1] isEqualToString:idCardY[num]]) {
            isIdCard = YES;
        }else{
            isIdCard = NO;
        }
    }else{
        isIdCard = NO;
    }
    return isIdCard;
}
  • 座机号码
/*
 *  座机号码
 */
 * (BOOL)checkInputLandLine:(NSString *)text
{
    NSString *regular = @"^0\\d{2}(\\-\\d|\\d\\-)\\d{7}$";
    return [self check:regular text:text];
}
  • 邮箱
/*
 *  邮箱
 */
 * (BOOL)checkInputEmail:(NSString *)text
{
    NSString *regular = @"^[a-z0-9][a-z0-9_]{2,14}[a-z0-9]@[a-z0-9]+\\.(com|cn)$";
    return [self check:regular text:text];
}
  • 以上方法通用此方法
+ (BOOL)check:(NSString *)regular text:(NSString *)text
{
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regular];
    return [predicate evaluateWithObject:text];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值