Elv*_*vis 2 javascript regex password-protection
为了使客户帐户更安全,精心设计的密码是一种很好的做法.这是我的正则表达式字符串,用于密码验证.
/^(?=.*[0-9])(?!.*?\d{3})(?=.*[a-zA-Z])(?!.*?[a-zA-Z]{3})(?=.*[~!@#$%^&*()+-?])([a-zA-Z0-9~!@#$%^&*()+-?]{8,})$/
Run Code Online (Sandbox Code Playgroud)
代表:
按顺序排列数字和/或字母不是很好.
例:
不行= efg123!$,abcd567%,xyz789 ^&,#hijk23456
OK = ryiiu562 @,erty745#,gjnfl45566 ^
谢谢
小智 6
我不知道如何使用RegEx,但这是一种天真的功能方法.
首先,循环遍历字符串,并通过向当前索引添加+1和+2并相应地进行比较,将每个字符与接下来的两个字符进行比较.
其次,再次遍历字符串并比较检查当前字符的后两个字符,看它们是否是连续的.
如果两个循环都找不到连续字符,则该函数返回true,否则返回false.
前四个返回false(失败),而后三个返回true(pass).
function test(s) {
// Check for sequential numerical characters
for(var i in s)
if (+s[+i+1] == +s[i]+1 &&
+s[+i+2] == +s[i]+2) return false;
// Check for sequential alphabetical characters
for(var i in s)
if (String.fromCharCode(s.charCodeAt(i)+1) == s[+i+1] &&
String.fromCharCode(s.charCodeAt(i)+2) == s[+i+2]) return false;
return true;
}
// For demo purposes only
var tests = [
'efg123!$',
'abcd567%',
'xyz789^&',
'#hijk23456',
'ryiiu562@',
'erty745#',
'gjnfl45566^'
], sep = '\t\u2192 ', out = ['Fail','Pass'], eol = '<br>';
document.write('<pre>');
for(var i in tests) document.write(tests[i] + sep + out[+test(tests[i])] + eol);
document.write('</pre>');Run Code Online (Sandbox Code Playgroud)