正则表达式检查 python 中的密码强度?
Regex to check password strength in python?
我正在尝试制作一个可以检查密码强度的正则表达式。在以下情况下,密码被认为是强密码:
- 它的最小长度为 8 个字符
- 它必须至少包含 2 个大写字母和 2 个小写字母
- 它必须至少包含 2 位数字
- 它必须包含至少 2 个来自
$,%,&,!,#
的特殊字符
这是我所做的:
# Strong Password Checker
import re
password_regex = re.compile(r'[(A-Z){2}(a-z){2}(0-9){2}($%&!#){2}]{8,}')
if password_regex.match('testpassword'):
print("Your password is strong")
else:
print("Your password is weak")
此代码提供的密码不强,但不会将其检测为弱密码,而是将其识别为强密码。
最初我正在学习正则表达式,所以我希望一切都简单明了,如果有人帮助我将不胜感激。
您可以在正则表达式中使用多个先行条件:
^(?=(?:[^A-Z]*[A-Z]){2})(?=(?:[^a-z]*[a-z]){2})(?=(?:\D*\d){2})(?=(?:[^$%&!#]*[$%&!#]){2}).{8,}$
或者使用 x
模式使其更易于阅读:
^
(?=(?:[^A-Z]*[A-Z]){2})
(?=(?:[^a-z]*[a-z]){2})
(?=(?:\D*\d){2})
(?=(?:[^$%&!#]*[$%&!#]){2})
.{8,}
$
正则表达式详细信息:
^
: 开始
(?=(?:[^A-Z]*[A-Z]){2})
: 确保至少有 2 个大写字母的先行条件
(?=(?:[^a-z]*[a-z]){2})
: 确保至少有 2 个小写字母的先行条件
(?=(?:\D*\d){2})
:先行条件以确保至少有 2 位数字
(?=(?:[^$%&!#]*[$%&!#]){2})
:先行条件以确保至少有 2 个给定的特殊字符
.{8,}
:确保我们有8个或更多的长度
$
:结束
我正在尝试制作一个可以检查密码强度的正则表达式。在以下情况下,密码被认为是强密码:
- 它的最小长度为 8 个字符
- 它必须至少包含 2 个大写字母和 2 个小写字母
- 它必须至少包含 2 位数字
- 它必须包含至少 2 个来自
$,%,&,!,#
的特殊字符
这是我所做的:
# Strong Password Checker
import re
password_regex = re.compile(r'[(A-Z){2}(a-z){2}(0-9){2}($%&!#){2}]{8,}')
if password_regex.match('testpassword'):
print("Your password is strong")
else:
print("Your password is weak")
此代码提供的密码不强,但不会将其检测为弱密码,而是将其识别为强密码。
最初我正在学习正则表达式,所以我希望一切都简单明了,如果有人帮助我将不胜感激。
您可以在正则表达式中使用多个先行条件:
^(?=(?:[^A-Z]*[A-Z]){2})(?=(?:[^a-z]*[a-z]){2})(?=(?:\D*\d){2})(?=(?:[^$%&!#]*[$%&!#]){2}).{8,}$
或者使用 x
模式使其更易于阅读:
^
(?=(?:[^A-Z]*[A-Z]){2})
(?=(?:[^a-z]*[a-z]){2})
(?=(?:\D*\d){2})
(?=(?:[^$%&!#]*[$%&!#]){2})
.{8,}
$
正则表达式详细信息:
^
: 开始(?=(?:[^A-Z]*[A-Z]){2})
: 确保至少有 2 个大写字母的先行条件(?=(?:[^a-z]*[a-z]){2})
: 确保至少有 2 个小写字母的先行条件(?=(?:\D*\d){2})
:先行条件以确保至少有 2 位数字(?=(?:[^$%&!#]*[$%&!#]){2})
:先行条件以确保至少有 2 个给定的特殊字符.{8,}
:确保我们有8个或更多的长度$
:结束