js如何把密码校验不得包含键盘上任意连续的三个相同键位符或shift转换的键位符
时间: 2024-09-12 11:16:32 浏览: 81
C#验证密码不能含有键盘连续字母
JavaScript 中检查用户输入的密码是否包含键盘上任意连续的三个相同键位或Shift键转换的字符,通常会涉及正则表达式和字符串处理。下面是一个简单的示例,你可以创建一个函数来进行这样的验证:
```javascript
function isValidPassword(password) {
// 定义键盘上所有可能的字符和特殊键位
const keyMappings = {
'a': 'qwertzuiop',
's': 'asdfghjkl;',
'd': 'dfghjkl;zxcv',
'f': 'ghjkl;poiuyt',
'g': 'hjkl;poiuyt,rnbvc',
'h': 'jkl;poiuytrnbvc,x',
'j': 'klopoiuytrnbvc,xmw',
'k': 'lpoiuytrnbvc,xmwasd',
'l': 'oiuytrnbvc,xmwasdz',
'p': 'oiuytrewqazs,dflk',
'o': 'iuytrewqazsd,jkml',
'u': 'ytrewqazsdfjk,lpoi',
'i': 'rewqazsdfjk,lpoiup',
'e': 'rwsadcfghjklyui',
'w': 'erfdcvbnmasl;kju',
'r': 'edcfsadghjkl;tyui',
't': 'yuiopmqwasd,fger',
'y': 'uiopmnbvcxzlk;jha',
'x': 'zxcbvnmrfgtlj;iou',
'c': 'vbncxdfghjk;lasui',
'v': 'bnmrcxdfghjl;iasu',
'b': 'nmcxdfghijkl;uioa',
'n': 'mnbvcxzkljas;diuf',
'm': 'nbvcxzkljas;uiodf',
'0': '1234567890',
'1': '234567890-=',
'2': '34567890-=qwerty',
'3': '4567890-=qwertyuiop',
'4': '567890-=qwertzuiop',
'5': '67890-=wertzuiop',
'6': '7890-=ertzuiop',
'7': '890-=rtzuiop',
'8': '90-=tzuiop',
'9': '=uiop',
'!': '@#$%^&*()_+',
'#': '[]{}|;:', "'",
'$': '.,<>/?',
'%': '*/-'
};
// 将密码转为小写并移除非字母数字字符
password = password.toLowerCase().replace(/[^a-z0-9]/g, '');
// 检查连续的三个字符是否来自键位映射
for (let i = 0; i < password.length - 2; i++) {
const currentChar = password[i];
if (keyMappings[currentChar].includes(password[i + 1]) && keyMappings[currentChar + password[i + 1]].includes(password[i + 2])) {
return false;
}
}
return true;
}
// 示例使用
const password1 = "password"; // 合格,不含连续重复键位
const password2 = "abc123"; // 不合格,含"abc"
const password3 = "aassd"; // 不合格,含"aas"
console.log(isValidPassword(password1)); // 输出: true
console.log(isValidPassword(password2)); // 输出: false
console.log(isValidPassword(password3)); // 输出: false
阅读全文