その招待状は本物ですか?
あなたは友人のパーティで受付をすることになりました、受付では事前に郵送された招待状が無いと入れません。
さらにその友人は
「内容の最後にあるコードもチェックしろよ」
と言っていきました、そのコードは
o_961026
というパターンです、しかし悪人がパーティに忍び込んでくることも想定してかその友人は
「そうそう、コードはデータベースにまとめたから。
だけど、そのコードにもパターンがあるからそれもチェックしてね」
と言いにきました、そこにメモが残されてました
「いいか、最初は【f,u,s,o】のどれかで始まって次に【_】が来て最後の6桁の数字が来る。
ただしその数字は9から始まっている」
という内容でした、しかし自分で判断するのもめんどうです。
そこでRubyの出番です。
とりあえず要点をまとめてみよう
- 最初は【f,u,s,o】のどれかで始まっている
- その次に【_】が来る
- そして6桁の数字なのだが最初は【9】である
それを判別するには…正規表現だ。
とりあえずそれを判定する正規表現を書いてみた。
print "Content-type:text/html"
sil = "o_961026"
if /^[f|u|s|o]_9[0-9]{5}/ =~ sil
print "OK"
else
print "NO!!"
end
パーティも終わり友人があなたの元に来ました
「ありがとう、よく判断できたね」
「へぇー」
その後二人は居酒屋に飲みにいきました
- if 〜 endと言うのは条件分岐なんですよ、これは後で入りますよ
- //で囲まれた部分に正規表現を書くんですよ
- ^というのは文字列の最初ですね、今回は【f,u,s,o】のどれかで始まることが前提でした
- [f|u|s|o]と言うのはですねぇ、どれか1文字が一致したらok何ですよ。
今回は^[f|u|s|o]だから、このどれかで始まったらまずはokなんですよ
- _9はいいですね、省略して
- [0-9]{5}は「0-9の数字が5回繰り返してる事」を表してますよ。
どうでもいいこととして【f,u,s,o】これも意味があるんです。
見なくてもいいやって思ってもとりあえずは見て笑えw
- f = Fujimura[藤村]
- u = Ureshino[嬉野]
- s = Suzui[鈴井]
- o = Ooizumi[大泉]
あなたはどうでしょう陣の仲間たちのパーティのうけつけをしていたのです。
では条件分岐もふれましょう
print "Content-type:text/html"
sil = "o_960423"
if /^[f|u|s|o]_9[0-9]{5}/ =~ sil
print "OK"
else
print "NO!!"
end
- まずはさっき言ってたパターンに合うかを判定します。
[if /^[f|u|s|o]_9[0-9]{5}/ =~ sil]ですね
- これが正解だったら、「ok」と表示されますよ
- もしも、ダメだったらelseの内容「print "NO!!"」が実行されて「NO!!」と表示されます
- そして、endで処理を終わらせます