我在javascript中有以下用于密码验证的正则表达式:
^[!#\$%\(\)\*,\-\./:;=\?@\[\\\]\^_`\{\|\}~a-zA-Z0-9]*$
<script type="text/javascript">
var regex = "^[!#\$%\(\)\*,\-\./:;=\?@\[\\\]\^_`\{\|\}~a-zA-Z0-9]*$";
var value = 'test';
if (value.match(regex) == false) {
alert('password invalid');
}
</script>
正则表达式规则是:
然而,正则表达式似乎不起作用。它匹配任何字符。我该如何解决这个问题?
答案 0 :(得分:1)
使用正向前瞻可以在一次匹配调用中验证正则表达式。使用此正则表达式:
var regex =
/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!#$%()\*,/:;=?@\[\\\]\^_`{}|.-])^.{12,25}$/;
var value = 'aaaAaaaaa?test2';
if (!value.match(regex))
document.writeln('invalid');
else
document.writeln('valid');
答案 1 :(得分:1)
尝试:
/^(?=(?:.*[a-z]){1})(?=(?:.*[A-Z]){1})(?=(?:.*\d){1})(?=(?:.*[!#$%()*,-./:;=?@[]^_`{|}~ ]){1,}).{12,25}$/
答案 2 :(得分:1)
这个正则表达式有效:
^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[-|^!#$%()*,./:;=?@_`{}~[\]]).{12,25}$
它使用先行技术来确保至少有一位数字,小写字母,...
另外,请Regex expression for password rules查看类似的挑战