欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

日常用到的正则表达式

程序员文章站 2022-04-29 16:45:43
...

校验密码强度()必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间

  • ^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

校验中文(字符串必须是中文)

  • ^[\\u4e00-\\u9fa5]{0,}$

由数字、26个英文字母或下划线组成的字符串

  • ^\\w+$

校验邮箱地址

  • [\\w!#$%&'*+/=?^_{|}~-]+(?:\.[\w!#$%&'*+/=?^_{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?

校验身份证号码(18位)

  • ^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$

校验日期

  • ^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$

校验金额(小数点后两位)

  • ^[0-9]+(.[0-9]{2})?$

校验手机号

  • ^1\\d{10}$

提取网页图片

  • \\< *[img][^\\\\>]*[src] *= *[\\"\\']{0,1}([^\\"\\'\\ >]*)

另附校验身份证代码

+ (BOOL)validateIdcard:(NSString *)idCard {

    BOOL flag;
    if (idCard.length <= 0)
    {
        flag = NO;
        return flag;
    }
    
    NSString *regex2 = @"^(\\d{17})(\\d|[xX])$";
    //    NSString *regex2 = @"^(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)|(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[Xx])$)$";
    NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
    flag = [identityCardPredicate evaluateWithObject:idCard];
    
    //如果通过该验证,说明身份证格式正确,但准确性还需计算
    if (!flag) {
        return flag;
    }
    
    if (idCard.length < 18) {
        flag =  NO;
        return flag;
    }
    
    // 省份代码。如果需要更精确的话,可以把六位行政区划代码都列举出来比较。
    NSString *provinceCode = [idCard substringToIndex:2];
    NSArray *proviceCodes = @[@"11", @"12", @"13", @"14", @"15",
                              @"21", @"22", @"23",
                              @"31", @"32", @"33", @"34", @"35", @"36", @"37",
                              @"41", @"42", @"43", @"44", @"45", @"46",
                              @"50", @"51", @"52", @"53", @"54",
                              @"61", @"62", @"63", @"64", @"65",
                              @"71", @"81", @"82", @"91"];
    if (![proviceCodes containsObject:provinceCode]){
        flag =  NO;
        return flag;
    }
    
    //将前17位加权因子保存在数组里---验证校验码
    NSArray * idCardWiArray = @[@"7", @"9", @"10", @"5", @"8", @"4", @"2", @"1", @"6", @"3", @"7", @"9", @"10", @"5", @"8", @"4", @"2"];
    
    //这是除以11后,可能产生的11位余数、验证码,也保存成数组
    NSArray * idCardYArray = @[@"1", @"0", @"10", @"9", @"8", @"7", @"6", @"5", @"4", @"3", @"2"];
    
    //用来保存前17位各自乖以加权因子后的总和
    
    NSInteger idCardWiSum = 0;
    for(int i = 0;i < 17;i++)
    {
        NSInteger subStrIndex = [[idCard substringWithRange:NSMakeRange(i, 1)] integerValue];
        NSInteger idCardWiIndex = [[idCardWiArray objectAtIndex:i] integerValue];
        
        idCardWiSum+= subStrIndex * idCardWiIndex;
        
    }
    
    //计算出校验码所在数组的位置
    NSInteger idCardMod=idCardWiSum%11;
    
    //得到最后一位身份证号码
    NSString * idCardLast= [idCard substringWithRange:NSMakeRange(17, 1)];
    
    //如果等于2,则说明校验码是10,身份证号码最后一位应该是X
    if(idCardMod==2)
    {
        if([idCardLast isEqualToString:@"X"]||[idCardLast isEqualToString:@"x"])
        {
            return flag;
        }else
        {
            flag =  NO;
            return flag;
        }
    }else
    {
        //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
        if([idCardLast isEqualToString: [idCardYArray objectAtIndex:idCardMod]])
        {
            return flag;
        }
        else
        {
            flag =  NO;
            return flag;
        }
    }
    
}
复制代码

转载于:https://juejin.im/post/5ab31f65518825558a068607