正则校验密码问题
实现包含3位及以上的数字字母密码,不允许为连续/重复的数字或字母,包括正序和倒序,例如:Abc.123、Aaaa@123、Zyx@321
使用正则校验密码正则好像不能校验,用程序写没啥思路
正则校验密码问题
实现包含3位及以上的数字字母密码,不允许为连续/重复的数字或字母,包括正序和倒序,例如:Abc.123、Aaaa@123、Zyx@321
使用正则校验密码正则好像不能校验,用程序写没啥思路
正则表达式确实可以用于密码校验,但要实现包含3位及以上的数字字母密码,同时不允许连续/重复的数字或字母(包括正序和倒序)的功能,正则表达式可能会变得相当复杂,并且不一定能够完全满足所有要求。
下面是一个尝试满足这些要求的正则表达式示例:
^(?![a-zA-Z]+$)(?![0-9]+$)(?!(.)\1{2})(?!(.)(?!\1)(.)\3{2})[a-zA-Z0-9]{3,}$
这个正则表达式的含义如下:
^
表示字符串的开始(?![a-zA-Z]+$)
确保密码不是全字母(?![0-9]+$)
确保密码不是全数字(?!(.)\1{2})
确保没有连续三个相同的字符(?!(.)(?!\1)(.)\3{2})
确保没有正序或倒序的三个相同字符(例如 123
或 321
)[a-zA-Z0-9]{3,}
确保密码至少包含3个字母或数字$
表示字符串的结束请注意,这个正则表达式并不完美,它可能无法处理所有可能的边缘情况。例如,它可能无法处理包含特殊字符的密码,或者处理包含多个连续/重复字符的复杂情况。
在实际应用中,更好的做法可能是使用正则表达式进行基本的格式校验,然后使用编程语言中的逻辑代码来检查密码是否满足其他要求。这样可以更容易地处理更复杂的规则和边缘情况。
如果你希望使用正则表达式和编程语言结合的方式来实现密码校验,我可以为你提供更详细的代码示例。
密码是否一定包含数字、字母或特殊字符中的几种,字符是否重复,以及密码长度可以用正则
可以参考:https://regex.top/password 并加以修改
是否包含连续可以用循环查询
"0123456789".indexof(str.substr(i,3))
"abcd..."...
function isValidPassword(password) {
// Check for at least 3 characters
if (password.length < 3) return false;
// Regex to check for consecutive characters
const consecutiveRegex = /([a-zA-Z0-9])\1+/;
// Regex to check for reverse sequences
const reverseRegex = /([a-zA-Z0-9])\1+/;
// Check for consecutive characters
if (consecutiveRegex.test(password)) return false;
// Check for reverse sequences by reversing the string and checking again
if (reverseRegex.test(password.split('').reverse().join(''))) return false;
return true;
}
// Test cases
console.log(isValidPassword("Abc.123")); // true
console.log(isValidPassword("Aaaa@123")); // false, consecutive 'a'
console.log(isValidPassword("Zyx@321")); // false, reverse sequence '123'
6 回答2.9k 阅读✓ 已解决
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决