我在验证TextFields时遇到了问题。
我的问题是,我有3个文本字段。
1.Name(我想要8到20个字符,包括小写和大写字母)
2.Email Id(有效的电子邮件ID)
3.Password(应该是Strong,即8到20个字符,包括小写,大写,数字和至少一个特殊字符)
我用regx解决了前两个条件。我已经遇到了密码验证条件,当我在密码中使用相同的regx时,我输入了正确的密码,它也显示了错误的密码提示。 我正在使用如下。
NSString *passwordRegex =@" ^.*(?=.{8,})(?=.*d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$";
NSPredicate *passwordTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", passwordRegex];
BOOL bool = [passwordTest evaluateWithObject:password.text];
if (bool==NO) {
UIAlertView *messageBox = [[UIAlertView alloc]initWithTitle:NSLocalizedString(@"Title", nil) message:NSLocalizedString(@"Invalid Password", nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", nil) otherButtonTitles:nil];[messageBox show];
[messageBox release];
passwordValid=0;
}else passwordValid=1;
先谢谢
答案 0 :(得分:1)
试试此代码
BOOL passwordValid;
NSString *passwordRegex =@"^.*(?=.{8,})(?=.*d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$";
NSPredicate *passwordTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", passwordRegex];
NSString *stringWithPass = @"C0mp@redText";
BOOL isPasswordValid = [passwordTest evaluateWithObject:stringWithPass];
if (isPasswordValid==NO) {
UIAlertView *messageBox = [[UIAlertView alloc]initWithTitle:NSLocalizedString(@"Title", nil) message:NSLocalizedString(@"Invalid Password", nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", nil) otherButtonTitles:nil];
[messageBox show];
passwordValid=0;
}else passwordValid=1;
我认为你必须从字符串开始的地方删除空格^
答案 1 :(得分:0)
试试这个:
^.*(?=.{8,20})(?=.*[a-z])(?=.*[A-Z])(?=.*[\d\W]).*$
并检查此
http://www.zorched.net/2009/05/08/password-strength-validation-with-regular-expressions/