我正在尝试Regex强密码。
我的正则表达式如下。适用于以下功能。
最小1位数最小1小写字母
最小1上字符
分钟1特殊字符
分钟8 字符最多15个字符
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w]).{8,15}$
有人建议避免进入白色空间吗?
答案 0 :(得分:1)
这个怎么样?
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w])(?!.*?\s).{8,15}$
除了所有积极的前瞻之外,我刚刚为空白添加了一个负面的预测。
至于它意味着什么,它基本上有一堆"前瞻"这意味着"只有选中的东西后跟"才能创建匹配。它有四种不同的前瞻:
(?=.*?[A-Z]) // followed by any number of characters and then a capital letter
(?=.*?[a-z]) // followed by any number of characters and then a lowercase letter
(?=.*?[0-9]) // followed by any number of characters and then a number
(?=.*?[^\w]) // followed by any number of characters and then not a word character (0-9a-zA-Z_)
开头的^
表示开头。所以它基本上说正则表达式的开头应该跟上面指定的所有四个条件。我刚刚添加了一个条款,说开始时可能没有空格。它被称为"否定前瞻":
(?!.*?\s)