【发布时间】:2015-10-19 02:17:02
【问题描述】:
我正在尝试使用以下要求验证我的 servlet 上的密码
o 密码必须由一个数字和以下之一组成
特殊字符:!@#$%^&*()
注意:1! 和 !1 都是有效密码
我一直试图开始工作的正则表达式是
?=.*[a-zA-Z])(?=.*\\d)(?=.*[!@#$%&*()_+=|<>?{}\\[\\]~-])
但它不需要1! 或!1
【问题讨论】:
标签: regex
我正在尝试使用以下要求验证我的 servlet 上的密码
o 密码必须由一个数字和以下之一组成
特殊字符:!@#$%^&*()
注意:1! 和 !1 都是有效密码
我一直试图开始工作的正则表达式是
?=.*[a-zA-Z])(?=.*\\d)(?=.*[!@#$%&*()_+=|<>?{}\\[\\]~-])
但它不需要1! 或!1
【问题讨论】:
标签: regex
为什么不这样“简单”,
/^((?:\d[!@#$%^&*()])|(?:[!@#$%^&*()]\d))$/
[!@#$%^&*()] 特殊字符
\d 一位
(?: ... ) 不要捕获组
|“或”运算符 ^(字符串)开始 $(字符串)结束
如果这些特殊字符中只有一个和只有一个数字应该匹配。
迷你 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 />");
}
【讨论】:
1!2@3