Iphone 如何使用8到15个字符和强密码验证文本字段
我有一个文本字段,我想在其中输入密码。我想输入强密码。这意味着8到15个字符,至少一个小写字母,一个大写字母,一个空间字符,一个数字。 请给出建议。在方法textField:ShouldChangeCharactersRange:replacementString:中,对于UITextField,您需要执行以下操作: 使用myTextField.text属性获取文本 检查大写和小写字符计数 同样,检查特殊字符和数字计数 如果满足所有条件,则处理字段else显示错误 我本想为您写下代码,但这违反了SO政策。您尝试编写此代码,如果遇到问题,您可以随时发布另一个问题。在方法文本字段:shouldChangeCharactersRange:replacementString:对于UITextField,您需要执行以下操作: 使用myTextField.text属性获取文本 检查大写和小写字符计数 同样,检查特殊字符和数字计数 如果满足所有条件,则处理字段else显示错误Iphone 如何使用8到15个字符和强密码验证文本字段,iphone,ios,validation,uitextfield,Iphone,Ios,Validation,Uitextfield,我有一个文本字段,我想在其中输入密码。我想输入强密码。这意味着8到15个字符,至少一个小写字母,一个大写字母,一个空间字符,一个数字。 请给出建议。在方法textField:ShouldChangeCharactersRange:replacementString:中,对于UITextField,您需要执行以下操作: 使用myTextField.text属性获取文本 检查大写和小写字符计数 同样,检查特殊字符和数字计数 如果满足所有条件,则处理字段else显示错误 我本想为您写下代码,但这违反了
我本想为您写下代码,但这违反了SO政策。您尝试编写此代码,如果遇到问题,您可以随时发布另一个问题。这可以使用正则表达式轻松完成。我对正则表达式不太熟悉,所以我建议这样做 您可以使用此功能检查:
- (BOOL)strongPassword:(NSString *)yourText
{
BOOL strongPwd = YES;
//Checking length
if([yourText length] < 8)
strongPwd = NO;
//Checking uppercase characters
NSCharacterSet *charSet = [NSCharacterSet uppercaseLetterCharacterSet];
NSRange range = [yourText rangeOfCharacterFromSet:charSet];
if(range.location == NSNotFound)
strongPwd = NO;
//Checking lowercase characters
charSet = [NSCharacterSet lowercaseLetterCharacterSet];
range = [yourText rangeOfCharacterFromSet:charSet];
if(range.location == NSNotFound)
strongPwd = NO;
//Checking special characters
charSet = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
range = [yourText rangeOfCharacterFromSet:charSet];
if(range.location == NSNotFound)
strongPwd = NO;
return strongPwd;
}
使用正则表达式可以很容易地做到这一点。我对正则表达式不太熟悉,所以我建议这样做 您可以使用此功能检查:
- (BOOL)strongPassword:(NSString *)yourText
{
BOOL strongPwd = YES;
//Checking length
if([yourText length] < 8)
strongPwd = NO;
//Checking uppercase characters
NSCharacterSet *charSet = [NSCharacterSet uppercaseLetterCharacterSet];
NSRange range = [yourText rangeOfCharacterFromSet:charSet];
if(range.location == NSNotFound)
strongPwd = NO;
//Checking lowercase characters
charSet = [NSCharacterSet lowercaseLetterCharacterSet];
range = [yourText rangeOfCharacterFromSet:charSet];
if(range.location == NSNotFound)
strongPwd = NO;
//Checking special characters
charSet = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
range = [yourText rangeOfCharacterFromSet:charSet];
if(range.location == NSNotFound)
strongPwd = NO;
return strongPwd;
}
与
您可以询问字符串的长度。将其与您想要的限制进行比较
与
您有一个为字符串提供正则表达式的方法,您还可以将其作为NSString的一个类别来实现
第一个参数是密码,第二个参数是模式
我对正则表达式不是很在行,所以可能有更好的解决方案,但这是我的方式
NSString *password = @"iS_bhd97zAA!";
NSString *scPattern = @"[a-z]";
NSString *cPattern = @"[A-Z]";
NSString *sPattern = @"[!%&\._;,]";
NSString *nPattern = @"[0-9]";
if (8 <= password.length && password.length <= 15 &&
[self string:password matches:scPattern] &&
[self string:password matches:cPattern] &&
[self string:password matches:sPattern] &&
[self string:password matches:nPattern])
{
NSLog(@"PW is valid");
}
除了特殊字符外,其他都有,也许你想自己添加:D
您可以询问字符串的长度。将其与您想要的限制进行比较
与
您有一个为字符串提供正则表达式的方法,您还可以将其作为NSString的一个类别来实现
第一个参数是密码,第二个参数是模式
我对正则表达式不是很在行,所以可能有更好的解决方案,但这是我的方式
NSString *password = @"iS_bhd97zAA!";
NSString *scPattern = @"[a-z]";
NSString *cPattern = @"[A-Z]";
NSString *sPattern = @"[!%&\._;,]";
NSString *nPattern = @"[0-9]";
if (8 <= password.length && password.length <= 15 &&
[self string:password matches:scPattern] &&
[self string:password matches:cPattern] &&
[self string:password matches:sPattern] &&
[self string:password matches:nPattern])
{
NSLog(@"PW is valid");
}
除了特殊字符外,其他都有,也许你想自己加上:D看看这个答案。。有许多有趣的文章介绍如何在复杂的短密码上使用密码短语来提供令人难忘的安全访问,我建议您在使用复杂密码之前先检查一下它们好吗?根据我的经验,用户很少擅长管理复杂的密码。Regex是实现这一点的方法。看看这个,看看这个答案。。有许多有趣的文章介绍如何在复杂的短密码上使用密码短语来提供令人难忘的安全访问,我建议您在使用复杂密码之前先检查一下它们好吗?根据我的经验,用户很少擅长管理复杂的密码。Regex是实现这一点的方法。看看这个,这可以用正则表达式简单地完成。@JanakNirmal:我编辑了我的答案。我不知道如何在iOS中编写正则表达式。所以我提出了一个很难的方法:用正则表达式可以很容易地做到。@JanakNirmal:我编辑了我的答案。我不知道如何在iOS中编写正则表达式。所以我提出了一个艰难的建议:啊,没有评论的反对票。你听起来有点像学校里的书呆子,他们总是服从老师告诉他们的一切。@MarcMosby没有,但如果知道我错在哪里就好了。不过你有一个很好的解决方案+我同意。啊,投反对票的人没有任何评论。你听起来有点像学校里的书呆子,他们总是服从老师告诉他们的一切。@MarcMosby没有,但如果知道我错在哪里就好了。不过你有一个很好的解决方案+1美元。
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$