校验密码强度()必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间
^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
校验中文(字符串必须是中文)
由数字、26个英文字母或下划线组成的字符串
校验邮箱地址
-
[\\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)$
校验金额(小数点后两位)
校验手机号
提取网页图片
\\< *[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;
}
}
}
复制代码