0

我正在尝试制作一个脚本,在脚本期间评估一个变量,如果它通过了其中一个测试,则 if/else 语句中的一个变量被设置为 true。

    if re.search(r'[A-Z]', password):
        conditions_met += 1
    else:
        password_needs_uppercase = True

    if re.search(r'[a-z]', password):
        conditions_met += 1
    else:
        password_needs_lowercase = True

    if re.search('\d', password):
        conditions_met += 1
    else:
        password_needs_number = True

如何检查变量之一(password_needs_uppercase、password_needs_lowercase 和 password_needs_number)是否为 True?

4

3 回答 3

2

使用任何()

if any((password_needs_uppercase, password_needs_lowercase, 
password_needs_number)):
于 2013-11-05T13:32:04.887 回答
1

你根本不需要正则表达式

password_needs_uppercase, password_needs_lowercase, password_needs_number = True, True, True
password = "Welcome123"
for char in password:
    if char.isupper(): password_needs_uppercase = False
    elif char.islower(): password_needs_lowercase = False
    elif char.isdigit(): password_needs_number = False

if any((password_needs_number, password_needs_lowercase, password_needs_uppercase)):
    print "password is not valid"
于 2013-11-05T13:35:34.687 回答
0

您可以简单地检查通过的搜索次数是否小于可能的最大值。

if re.search(r'[A-Z]', password):
    conditions_met += 1

if re.search(r'[a-z]', password):
    conditions_met += 1

if re.search('\d', password):
    conditions_met += 1

if conditions_met < 3:
    handle_bad_password()

如果您需要对每个失败案例进行特定处理,最好立即执行,而不是使用稍后检查的硬编码变量名称。

if not re.search(r'[A-Z]', password):
    handle_missing_uppercase()
elif not re.search(r'[a-z]', password):
    handle_missing_lowercase()
elif re.search('\d', password):
    handle_missing_numbers()
else:
    handle_acceptible_password()
于 2013-11-05T13:39:56.043 回答