js正则校验,是否有(大写字母 和 小写字母 和 数字 和 符号)这四种类型,或者有其中的三种类型,且8-20字符
时间: 2024-06-09 21:09:05 浏览: 86
可以使用正则表达式来实现该校验,如下所示:
```javascript
/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d|.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,20}$/
```
这个正则表达式包括四个部分:
1. `^(?=.*[A-Z])` 表示以任意大写字母开头;
2. `(?=.*[a-z])` 表示包含任意小写字母;
3. `(?=.*\d|.*[@$!%*?&])` 表示包含任意数字或符号;
4. `[A-Za-z\d@$!%*?&]{8,20}$` 表示长度为8-20个字符,且只包含大写字母、小写字母、数字和符号四种类型中的任意一种或多种。
使用示例:
```javascript
const validatePassword = (password) => {
const regex = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d|.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,20}$/;
return regex.test(password);
};
console.log(validatePassword('Abc123!')); // true
console.log(validatePassword('abc123!')); // false
console.log(validatePassword('ABC123!')); // false
console.log(validatePassword('Abc123')); // false
console.log(validatePassword('Abcdefghijklmn123456')); // false
console.log(validatePassword('Abcdefghijklmn123!')); // true
```
阅读全文