以下は、入力された文字列が大文字から始まり、小文字と数字を含み、かつ文字の長さ8以上かを判定する関数です。プログラムがあまり美しくないため、特に最初の大文字から始まるかの判定など、文字列の先頭を取ってきて正規表現を使っていますが、これ以外にもっと効率的な(大文字判定に限らず)書き方はありませんでしょうか?自分ならこう書くといったアイディアがありましたら、ぜひご教授ください。
python
1def strong_pw(string: str) -> str: 2 import re 3 re_starts_with_upper = re.compile(r'[A-Z]') 4 re_contains_alpha = re.compile(r'[a-z]+') 5 re_contains_num = re.compile(r'\d+') 6 if len(string) < 8: 7 return "パスワードが短すぎます。" 8 else: 9 mo_starts_with_upper = re_starts_with_upper.search(string[0]) 10 if mo_starts_with_upper == None: 11 return "パスワードは大文字から始めてください。" 12 mo_contains_alpha = re_contains_alpha.search(string) 13 if mo_contains_alpha == None: 14 return "パスワードは小文字も含むようにしてください。" 15 mo_contains_num = re_contains_num.search(string) 16 if mo_contains_num == None: 17 return "パスワードは数字を含むようにしてください。" 18 19 return "強度は十分です。"
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/23 06:35