为了让客户帐户更安全,精心设计的密码是一种很好的做法。这是我的正则表达式字符串,用于密码验证。
/^(?=.*[0-9])(?!.*?\d{3})(?=.*[a-zA-Z])(?!.*?[a-zA-Z]{3})(?=.*[~!@#$%^&*()+-?])([a-zA-Z0-9~!@#$%^&*()+-?]{8,})$/
代表:
按顺序排列数字和/或字母不是好的。
示例:
不行= efg123!$,abcd567%,xyz789 ^&,#hijk23456
确定 = ryiiu562 @,erty745#,gjnfl45566 ^
谢谢
答案 0 :(得分: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>');
答案 1 :(得分:0)
您可以通过循环使用字符并使用charCodeAt
字符串方法,获得与下面类似的功能。
注意:这也适用于以下链接中提出的问题。
string validation for 3 or more consecutive sequential alphanumeric characters in javascript
function validate() {
var pwd = document.getElementById('password').value;
var isValid = checkPassword(pwd);
var elm = document.getElementById('result');
elm.innerHTML = isValid ? 'Valid' : 'Invalid';
elm.style.color = isValid ? 'green' : 'red';
}
function checkPassword(s) {
if(s) {
var test = (x) => !isNaN(x);
var check = (x, y, i) => x + i === y;
for(var i = 0; i < s.length - 2; i++) {
if(test(s[i])) {
if(test(s[i + 1]) && test(s[i + 2])) {
if(check(s[i], s[i + 1], 1) &&
check(s[i], s[i + 2], 2)) {
return false;
}
}
} else if(!test(s[i + 1]) && !test(s[i + 2])) {
if(check(s.charCodeAt(i), s.charCodeAt(i + 1), 1) &&
check(s.charCodeAt(i), s.charCodeAt(i + 2), 2)) {
return false;
}
}
}
}
return true;
}
document.getElementById('buttonToValidate').click();
&#13;
<input type="text" id="password" value="efg123!$" />
<input type="button" id="buttonToValidate" value="Check" onclick="validate()" />
<span id="result" />
&#13;