密码8到64位大小写字母+数字+字符 不能包含空格

#import "NSString+Extension.h"
#define NULLString(string) ((![string isKindOfClass:[NSString class]])||[string isEqualToString:@""] || (string == nil) || [string isEqualToString:@""] || [string isKindOfClass:[NSNull class]]||[[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0)
@implementation NSString (Extension)
- (NSString *)validationPassword:(NSString *)password{

    // 判断密码不能包含空格 和要符合规则
    NSRange range = [password rangeOfString:@" "];
    NSString *validate = @"^(?=.*\\d)((?=.*[a-z])(?=.*[A-Z])(?=.*\\W).\\S{7,63})$";
    NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",validate];
    // 判断密码是否为空
    if (NULLString(password)) {
        return @"密码不能为空不符合规则";
    } else {
        if (range.location != NSNotFound) {
            return @"密码包含空格不符合规则";
        } else {
            if ([numberPre evaluateWithObject:password]) {
                return @"修改成功";
            } else {
                return @"密码不符合规则";
            }
        }
    }
    return nil;
}

@end
### 回答1: "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,20}$" 该正则表达式表示: ^ 匹配输入字符串的开始位置。 (?=.*[a-z]) 匹配小写字母 (?=.*[A-Z]) 匹配大写字母 (?=.*\\d) 匹配数字 (?=.*[@$!%*?&]) 匹配特殊字符 [A-Za-z\\d@$!%*?&]{8,20} 匹配8到20个字符 $ 匹配输入字符串的结束位置。 请注意: 如果您使用此表达式验证密码,您应该在存储密码时使用加密。 ### 回答2: 可以使用以下正则表达式来匹配一个同时包含大小写字母数字、特殊字符,并且长度为8到20位的字符串: ^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@#$%^&+=])(?=\\S+$).{8,20}$ 该正则表达式使用了肯定顺序预查的方式,分别检查了是否包含小写字母、大写字母数字和特殊字符,并且使用了\S来确保没有空格。最后使用.{8,20}来限制字符串的长度为8到20位。 以下是一个使用该正则表达式验证字符串的Java示例代码: ```java import java.util.regex.Pattern; public class Main { public static void main(String[] args) { // 要验证的字符串 String password = "Abcd1234@"; // 正则表达式 String regex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@#$%^&+=])(?=\\S+$).{8,20}$"; // 创建 Pattern 对象 Pattern pattern = Pattern.compile(regex); // 执行匹配 boolean isMatched = pattern.matcher(password).matches(); // 输出结果 System.out.println("密码是否符合要求:" + isMatched); } } ``` 以上代码会输出"密码是否符合要求:true",表示该密码符合要求。 ### 回答3: 可以使用以下Java代码编写一个满足要求的正则表达式: ```java String regex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[a-zA-Z\\d@$!%*?&]{8,20}$"; ``` 正则表达式解释: - `(?=.*[a-z])`:至少包含一个小写字母 - `(?=.*[A-Z])`:至少包含一个大写字母 - `(?=.*\d)`:至少包含一个数字 - `(?=.*[@$!%*?&])`:至少包含一个特殊字符(这里包括了常见的特殊字符,你可以根据实际需求自行修改) - `[a-zA-Z\d@$!%*?&]{8,20}`:包含大小写字母数字和特殊字符,长度在8到20之间 例如,你可以使用以下代码来验证一个字符串是否符合该正则表达式: ```java String password = "Abc123@!"; if (password.matches(regex)) { System.out.println("密码格式正确"); } else { System.out.println("密码格式不正确"); } ``` 这个正则表达式可以确保密码必须包含大小写字母数字和特殊字符,并且长度在8到20位之间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值