Javascript正则表达式任何一个强制性特殊字符

时间:2017-11-24 15:20:45

标签: javascript regex

我创建了一个用于密码验证的正则表达式

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&#^~|_.`+=-])[A-Za-z\d$@$!%*?&#^~|_.`+=-]{12,25}/
  • 允许最少12个字符和最多25个字符。
  • 必须至少有一个号码。
  • 一个大写
  • 一个小写
  • 一个特殊角色。(任何一个)

工作正常。

但是我需要提到特殊字符[$@$!%*?&#^~|_.`+=-]的必填字段,有什么方法可以创建一个可以处理任何特殊字符的正则表达式。例如 Pras022222()1 这不会被视为有效密码,因为我没有在列表中提及()

1 个答案:

答案 0 :(得分:1)

您可以将此正则表达式与\W

一起使用
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[_\W]).{12,25}$

RegEx Demo

此处,字符类[_\W]将强制存在任何非单词字符或下划线。

RegEx分手:

  • ^:断言开始
  • (?=.*[a-z]):断言我们前面有一个小写字母
  • (?=.*[A-Z]):断言我们前面有一个大写字母
  • (?=.*\d):断言我们前面有一个数字
  • (?=.*[_\W]):断言我们前面有下划线或非单词字符
  • .{12,25}:匹配12到25个字符的字符串
  • $:断言结束