正则表达式验证用户名、密码、手机号码、身份证(推荐)
废话不多说了,下面给大家介绍使用正则表达式验证用户名、密码、手机号码、身份证的写法,需要的的朋友参考下吧
//用户名
+(BOOL)validateUserName:(NSString*)name
{
NSString*userNameRegex=@"^[A-Za-z0-9]{3,20}+$";
NSPredicate*userNamePredicate=[NSPredicatepredicateWithFormat:@"SELFMATCHES%@",userNameRegex];
BOOLB=[userNamePredicateevaluateWithObject:name];
returnB;
}
//密码
+(BOOL)validatePassword:(NSString*)passWord
{
NSString*passWordRegex=@"^[a-zA-Z0-9]{6,20}+$";
NSPredicate*passWordPredicate=[NSPredicatepredicateWithFormat:@"SELFMATCHES%@",passWordRegex];
return[passWordPredicateevaluateWithObject:passWord];
}
//判断手机号码格式是否正确
+(BOOL)valiMobile:(NSString*)mobile
{
mobile=[mobilestringByReplacingOccurrencesOfString:@""withString:@""];
if(mobile.length!=11)
{
returnNO;
}else{
/**
*移动号段正则表达式
*/
NSString*CM_NUM=@"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";
/**
*联通号段正则表达式
*/
NSString*CU_NUM=@"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";
/**
*电信号段正则表达式
*/
NSString*CT_NUM=@"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";
NSPredicate*pred1=[NSPredicatepredicateWithFormat:@"SELFMATCHES%@",CM_NUM];
BOOLisMatch1=[pred1evaluateWithObject:mobile];
NSPredicate*pred2=[NSPredicatepredicateWithFormat:@"SELFMATCHES%@",CU_NUM];
BOOLisMatch2=[pred2evaluateWithObject:mobile];
NSPredicate*pred3=[NSPredicatepredicateWithFormat:@"SELFMATCHES%@",CT_NUM];
BOOLisMatch3=[pred3evaluateWithObject:mobile];
if(isMatch1||isMatch2||isMatch3){
returnYES;
}else{
returnNO;
}
}
}
/**
*验证身份证号码是否正确的方法
*
*@paramIDNumber传进身份证号码字符串
*
*@return返回YES或NO表示该身份证号码是否符合国家标准
*/
+(BOOL)isCorrect:(NSString*)IDNumber
{
NSMutableArray*IDArray=[NSMutableArrayarray];
//遍历身份证字符串,存入数组中
if(IDNumber.length==18){
for(inti=0;i<18;i++){
NSRangerange=NSMakeRange(i,1);
NSString*subString=[IDNumbersubstringWithRange:range];
[IDArrayaddObject:subString];
}
}else{
for(inti=0;i<15;i++){
NSRangerange=NSMakeRange(i,1);
NSString*subString=[IDNumbersubstringWithRange:range];
[IDArrayaddObject:subString];
}
}
//系数数组
NSArray*coefficientArray=[NSArrayarrayWithObjects:@"7",@"9",@"10",@"5",@"8",@"4",@"2",@"1",@"6",@"3",@"7",@"9",@"10",@"5",@"8",@"4",@"2",nil];
//余数数组
NSArray*remainderArray=[NSArrayarrayWithObjects:@"1",@"0",@"X",@"9",@"8",@"7",@"6",@"5",@"4",@"3",@"2",nil];
//每一位身份证号码和对应系数相乘之后相加所得的和
intsum=0;
if(IDNumber.length==18){
for(inti=0;i<17;i++){
intcoefficient=[coefficientArray[i]intValue];
intID=[IDArray[i]intValue];
sum+=coefficient*ID;
}
}else{
for(inti=0;i<14;i++){
intcoefficient=[coefficientArray[i]intValue];
intID=[IDArray[i]intValue];
sum+=coefficient*ID;
}
}
//这个和除以11的余数对应的数
NSString*str=remainderArray[(sum%11)];
//身份证号码最后一位
NSString*string;
if(IDNumber.length==18){
string=[IDNumbersubstringFromIndex:17];
}else{
string=[IDNumbersubstringFromIndex:14];
}
//如果这个数字和身份证最后一位相同,则符合国家标准,返回YES
if([strisEqualToString:string]){
returnYES;
}else{
returnNO;
}
}
以上所述是小编给大家介绍的正则表达式验证用户名、密码、手机号码、身份证,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!