搞开发一年多了,总是学习别人的。今天开始也想记录下自己平时的一些积累,方便以后使用和学习。也为有需要得朋友提供一些资料。
第一篇主要枚举一些主流的正则表达式可能在很多项目中都会用到的。
// 登录名验证:4到16位,数字或英文或下划线
#define REG_LOGINNAME_STR @"^[a-zA-Z0-9_\u4e00-\u9fa5]{4,16}+$"
// 真实姓名验证:汉字 [\u4e00-\u9fa5]
#define REG_NICKNAME_STR @"^([\u4e00-\u9fa5]){0,}$"
// 密码验证:6到16位数字和英文
#define REG_PASSWORD_STR @"^[A-Za-z0-9]{6,16}+$"
// 邮箱验证
#define REG_MAIL_STR @"\\b([a-zA-Z0-9%_.+\\-]+)@([a-zA-Z0-9.\\-]+?\\.[a-zA-Z]{2,6})\\b"
// 手机号码验证
#define REG_PHONENUM_STR @"^((13[0-9])|(147)|(15[^4,\\D])|(17[^4,\\D])|(18[0-9]))\\d{8}$"
// 身份证验证:15或18位
#define REG_IDCARDNUM_STR @"\\d{15}|\\d{18}"
//银行卡号 11.17 16位或19位
#define REG_BANKCARD_STR @"\\d{16}|\\d{19}"
下面举个简单例子为大家:
最常用的我们一般对手机号码以及账户密码的输入限制:
self.textfPhoneNum :输入手机号的textfield.
self.textfLoginPassword : 输入密码的textfield.
//正则 手机号
- (NSString *) getPhoneNumber {
NSString *phoneNumber = [self.textfPhoneNum text];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", REG_PHONENUM_STR];
if (![predicate evaluateWithObject: phoneNumber]) {
return nil;
}
return phoneNumber;
}
//不支持特殊符号的6-16位数字或字母
- (NSString *) getPassWord {
NSString * password = [self.textfLoginPassword text];
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",REG_PASSWORD_STR];
if (![predicate evaluateWithObject:password]) {
return nil;
}
return password;
}
点击对应响应时间时:
- (IBAction)LoginBtnClick:(id)sender {
NSLog(@"登陆");
NSString * username =[self getPhoneNumber];//调上面的方法。
if (nil == username || username.length < 1) {
[self showPromptText: @"请输入合法的手机号码"hideAfterDelay: 1.7];
return;
}
NSString *loginpwdstr = [self getPassWord];
if (nil == loginpwdstr || loginpwdstr.length < 1)
{
[self showPromptText: @"请输入6-16位数字或英文字母密码!" hideAfterDelay: 1.7];
return;
}
NSLog(@"将数据上传到服务器");
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:username forKey:@"phone"];
[dict setObject:loginpwdstr forKey:@"password"];
[memberMan loginUsername:dict];
}
简单的流程就是这样,其他的类型可以相似的对应修改。
枚举里的正则也可以进行对应的修改。 错误之处望指正。
下班!
2016.01.11