Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式密码强度_Regex - Fatal编程技术网

Regex 正则表达式密码强度

Regex 正则表达式密码强度,regex,Regex,我编写了一个正则表达式,它可能用于密码强度验证: /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*\(\)\_])(?=.{6,})^\S*$/ 我的密码标准如下: 至少6个字符 没有空间 至少一位数字 至少有一个大写字母 至少有一个小写字母 至少一个特殊字符:!@$%^&*()_ 这是预期产出: FooBar123! should match foobar123! should not

我编写了一个正则表达式,它可能用于密码强度验证:

/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*\(\)\_])(?=.{6,})^\S*$/
我的密码标准如下:

  • 至少6个字符
  • 没有空间
  • 至少一位数字
  • 至少有一个大写字母
  • 至少有一个小写字母
  • 至少一个特殊字符:!@$%^&*()_
这是预期产出:

FooBar123!           should match
foobar123!           should not match (no upper-case letter)
FooBar123            should not match (no special character)
F0bar! F0bar!        should not match (contains spaces)
Fo0*                 should not match (too short)

出于某种原因,除了FooBar123!之外,所有测试都通过了。知道为什么会这样吗?谢谢。

您可以尝试下面的正则表达式,该条件可以通过此表达式的响应实现


^(?=.[a-z])(?=.[a-z])(?=.[0-9])(?=.[!@\$%\^&*\(\)\\)\)(?=.{6,})^\S*$

您使用什么编程语言?Regex确实不适合进行密码验证——或者至少不适合一次验证,而是一步一步地验证。将其拆分为几个Regex要容易得多,在JS中将其全部塞进一行对我来说变得复杂(除了聪明之外,没有任何理由)。规则是:“没有空格”和“至少一个特殊字符(从您的列表中)“这些都是坏习惯。为什么要在规则中加入这种武断的限制?让用户输入他们想要的任何内容。“特殊字符”可以是
,或
}
,或
[!@\$%\^&*\(\)\\\\\\\\\\\]
会伤害眼睛。可以使它成为
[!@$%^&*()
。不需要在末尾额外的
^
,在开头就已经有了。计数断言可以与非空格组合
\S{6,}$
重写为
^(?=.[a-z])(?=.[a-z])(?=.[0-9])(?=.[!@.$%^&*())\S{6,}$
。即使如此,你的工作。