我已经看到了有关强密码检查的答案,但是我对字符的显示顺序还有其他要求。
密码至少应包含:
订单为:
例如
答案 0 :(得分:1)
我相信您正在寻找的正则表达式是:https://regex101.com/r/nO2DxE/2
说明:
这些组(?=.*[A-Z].*)
(?=.*[0-9].*)
(?=.*[a-z].*)
确保您的字符串至少包含一个大写字母,一个小写字母和一个数字。正则表达式的其余部分检查您所描述的顺序是否得到遵守。
总体而言,正则表达式为:
(?=.*[A-Z].*)(?=.*[0-9].*)(?=.*[a-z].*)^[a-zA-z][a-zA-Z0-9]*[@!#+-]$
答案 1 :(得分:1)
在密码中引入特定的字符顺序使其相对可预测,从而失去了强度,我建议您摆脱该限制。不过,您可以使用此正则表达式来满足您的需求,
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*])[a-zA-Z][a-zA-Z\d]*[~!@#$%^&*?<>]*$
说明:
^
->字符串开头(?=.*[a-z])
->确保密码至少包含一个小写字母。(?=.*[A-Z])
->确保密码至少包含一个大写字母。(?=.*\d)
->确保密码至少包含一位数字。(?=.*[~!@#$%^&*])
->确保密码中至少有一个特殊字符。您可以在其中放一些您想当作特殊字符的字符。现在是确保订单的零件。如您所说,它应该以字母开头,因此我们需要第一个字符为
[a-zA-Z]
然后它后面可以是字母或数字,因此您可以使用
[a-zA-Z\d]*
最后,您需要特殊字符,并通过您的语句“最后应该是特殊字符。” 我假设您不想将其限制为仅一个特殊字符,因此在正则表达式的结尾应该是这个
[~!@#$%^&*?<>]*
,可以匹配一个或多个特殊字符。如果您真的只是说一个特殊字符,那就把它设为[~!@#$%^&*?<>]
最后以$
结尾,以停止匹配字符串。
希望这对您有用。否则,让我知道其他任何疑问。
修改
奖金: 如果您还想检查长度,则可以使用以下方法进行检查:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*])(?=.{6,18}$)[a-zA-Z][a-zA-Z\d]*[~!@#$%^&*?<>]*$
附加的(?=.{6,18}$)
是为了确保您的正则表达式的长度在6到18之间。
@Pushpesh, 如果有误,请更正。