[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(DTPtechNote:1264) [ruby] mail addressのチェック



名著と名高いrubyレシピ
http://www.sbcr.jp/books/products/detail.asp?sku=4797324295
のp141に有効なメールアドレスかどうかのチェックをするサンプルがのっていますが、
1回きりなら、こう書いたほうがいいように思います。

my_address = "aaaaa@example.com"
unless my_address =~ /^[a-zA-Z0-9_\#!$%&`'*+\-{|}~^\/=?\.]+@[a-zA-Z0-9_\#!$%&`'*+\-{|}~^\/=?\.]+$/ then
p "Error and Stop"
exit
end
p "#{my_address} is OK."


何度も使う用にメソッドとしたいなら

def valid_email_address?(str)
	ans = false
	ans = true if str =~ /^[a-zA-Z0-9_\#!$%&`'*+\-{|}~^\/=?\.]+@[a-zA-Z0-9_\#!$%&`'*+\-{|}~^\/=?\.]+$/
	return ans
end
p valid_email_address?(my_address)

とした方がいいじゃないでしょうか。
・正規表現のなるべく展開した方がいい。早いから。
・スペース類や全角英数字(と約モノ)をねらい打ちで落とすというのもなんだかな。この2行は意味不明。
・判定?メソッドなんだから、tureかfalseでお返事した方がいい。
あと、なぜにグローバル?とか、、、
せっかく有効性云々ならドメイン名の逆引きとかすべきなのか、、、とか。


新年早々、重箱の隅の整理ですか、あーそうですか、相変わらずですな、みたいな書き込みですいません。恐縮。そういえば、あけおめことよろ。