【发布时间】:2012-06-01 16:59:50
【问题描述】:
我在 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>
正则表达式规则是:
- 12-25 个字符
- 至少一个大写字母
- 至少一个小写字母
- 至少一位数字
- 至少有一个特殊字符:!#$%()*,-./:;=?@[]^_`{|}~
但是,正则表达式似乎不起作用。它匹配任何字符。我该如何解决这个问题?
【问题讨论】:
-
首先,我在该正则表达式中看不到任何强制 12-25 个字符限制的地方。您似乎刚刚使用了 * ,这意味着 '0 或更多' - 您当前的正则表达式只是读取:开始 -- 您的四个项目符号中的任意数量的字符(包括 0) -- 结束
-
将您的正则表达式拆分为 3 个正则表达式并检查所有规则。
标签: javascript regex