【python】パスワードのバリデーション的なやつ
今回は、パスワードのバリデーションについて見てみます。
結構使用する機会は多いのかな。
結構単純に
アルファベットの大文字小文字が入力されていること
数字が入っていること
の2点で対応。
本当は記号とかも入れた方がいいのかもしれないけど。
でもパスワードに記号入れるのってあんまりないかもな・・?
あと10文字以上は入力してもらうってな感じ。
pythonの正規表現
前も書きましたが、正規表現は苦手です。
覚えるもんじゃないって前の上司は言ってたっけな・・・w
覚えておけば便利なんでしょうけど、検索すれば出てくるしね。
こちらを参考にさせていただきました。
Pythonでの正規表現の使い方
あとドキュメント。
6.2. re — 正規表現操作
やっぱりあって難しいな。
re っていう便利なライブラリ?が判別してくれるみたいです。
スポンサードサーチ
関数を作る
いまいち関数ってのがしっくりきてない感じはしますが、まあとりあえず置いといて。
コードはこんな感じでした。
一個の中で完結させたかったんだけど、絶対にもっとうまい方法があるはず・・・。
import re
# 小文字チェック
def checkalpha(password):
search = re.search("[a-z]+", password)
return True if search else False
# 大文字チェック
def checkAlpha(password):
Alphaserch = re.search("[A-Z]+", password)
return True if Alphaserch else False
# 数字チェック
def checknum(password):
numsearch = re.search("[0-9]+", password)
return True if numsearch else False
# 全てのチェック
def checking(data):
def allCheck():
ansalpha = checkalpha(data)
ansAlpha = checkAlpha(data)
ansnum = checknum(data)
return True if ansalpha == True and ansAlpha == True and ansnum == True else False
return True if len(data) >= 10 and allCheck() else False
ifが多く、かなりごちゃごちゃ感・・・。
数字は良いとして、これ全部まとめる方法ってないのかな。
一個一個関数書くのはいいんだけど、速度的にはどうなんだろうとか色々考えちゃいますね。
参考:
[修正] Python 文字列の英数字判定でハマった
Pythonを使ってパスワードの使用可能文字チェックを作成する
以上です。