練習でユーザー登録画面を海外のyoutuberを参考に見よう見まねで作成していた際にisalnum()でユーザー名のバリデーションを行っていました。
軽く動作確認すると、日本語は可能だったのですが、場合によっては日本語をfalseにすることもあるかな気になり、日本語の際にFalseにするにはどうすべきか調べた時のメモです。
isalnum()とは
isalnum()は文字列の中が全て英字または数字であるかどうかを判定する関数で、数字または英字のときはTrueを返します。
また1文字も入力がない場合はFalseを返します。
num = "1234567890"
print(num.isalnum()) # True
str = "abcdefg"
print(str.isalnum()) # True
mix = "dfghj7890"
print(mix.isalnum()) # True
simbol = "ab12&!"
print(simbol.isalnum()) # False
noStr = ""
print(noStr.isalnum()) # False
日本語もtrueを返します。
hiragana = "あいうえお"
print(hiragana.isalnum()) # True
kanji = "日本語"
print(kanji.isalnum()) # True
katakana = "ハヒフヘホ"
print(kanji.isalnum()) # True
hankaku = "カキクケコ"
print(kanji.isalnum()) # True
日本語の時にisalnum()でFalseにするには
isalnum()で日本語の時にFalse判定するにはutf-8にエンコードするとよいです。
hiragana = "あいうえお"
print(hiragana.encode('utf-8').isalnum()) # False
kanji = "日本語"
print(kanji.encode('utf-8').isalnum()) # False
katakana = "ハヒフヘホ"
print(kanji.encode('utf-8').isalnum()) # False
hankaku = "カキクケコ"
print(kanji.encode('utf-8').isalnum()) # False
おわり
is alphabet number の略でisalnum()なんですかね。
バリデーションも関数で簡単にできるようになるんですね。
最近やりたいこととは別の仕事でなかなか勉強できていないですが、少しずつでも覚えていきたいところです。