我尝试使用以下要求验证我的servlet上的密码
o密码必须由一个数字和以下一个组成 特殊字符:!@#$%^& *()
正在尝试上班的正则表达式是注意: 1!和!1 都是有效密码
?=.*[a-zA-Z])(?=.*\\d)(?=.*[!@#$%&*()_+=|<>?{}\\[\\]~-])
但不需要1!
或!1
答案 0 :(得分:0)
为什么不像这样“简单”,
/^((?:\d[!@#$%^&*()])|(?:[!@#$%^&*()]\d))$/
[!@#$%^&amp; *()] 特殊字符
\ d 一位数字
(?:...)不捕获群组 | “或”运营商 ^ (字符串)开头 $ (字符串)结束
如果只有其中一个特殊字符且只有一个匹配。
mini Javascript演示:
var items = ["!1","1!","123123","123!","1!2@3"]
for (var idx in items){
var item = items[idx];
document.write(item +" => "+ (item.match(/^((?:\d[!@#$%^&*()]){1}|(?:[!@#$%^&*()]\d))$/)||"nomatch"));
document.write("<br />");
}