密码验证正则表达式

时间:2015-10-19 02:17:03

标签: regex

我尝试使用以下要求验证我的servlet上的密码

o密码必须由一个数字和以下一个组成 特殊字符:!@#$%^& *()

  

注意: 1!!1 都是有效密码

正在尝试上班的正则表达式是

?=.*[a-zA-Z])(?=.*\\d)(?=.*[!@#$%&*()_+=|<>?{}\\[\\]~-])

但不需要1!!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 />");
}