【问题标题】:Password validate regex [duplicate]密码验证正则表达式 [重复]
【发布时间】:2015-10-19 02:17:02
【问题描述】:

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

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

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

我一直试图开始工作的正则表达式是

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

但它不需要1!!1

【问题讨论】:

标签: regex


【解决方案1】:

为什么不这样“简单”,

/^((?:\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
  • 现在应该匹配,这是一个小括号错误。 :)
猜你喜欢
  • 2013-01-19
  • 2015-06-10
  • 2016-06-03
  • 2016-10-30
  • 2016-04-15
  • 2014-12-12
  • 2016-10-09
  • 2016-04-12
  • 2014-12-16
相关资源
最近更新 更多