在ios中验证文本字段文本

时间:2013-04-27 09:07:01

标签: iphone ios regex validation

我在验证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;

先谢谢

2 个答案:

答案 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/