今回は和暦にマッチする正規表現を書いてみます
今まであまり正規表現を書いてこなかったのでここに来て手こずっているんです…
Table of Contents
まずは西暦にマッチさせてみる
日付にマッチする正規表現を上記から参考にして取得してみます
^[0-9]{4}年(0[1-9]|1[0-2]|[1-9])月(0[1-9]|[12][0-9]|3[01]|[1-9])日$
はい!これでとりあえず西暦にマッチする正規表現が書けましたね
次に説明をしていきます
ちなみに正規表現の書き方をチェックするには↓を参考にしてみてくださいね
年を取得する正規表現
[0-9]{4}年
これは0~9を表す4桁の数字をマッチするように書かれています。
ここは簡単ですね。
月を取得する正規表現
ここでは正規表現を()を利用して1つのグループとしてみながらマッチさせていきます
(0[1-9]|1[0-2]|[1-9])月
これは3つのパターンに分けることができますね
- 0[1-9] => 先頭が0なら2つ目は1~9の数字
- 1[0-2] => 先頭が1なら2つ目は0~2 (10月、11月、12月が想定)
- [1-9] => 1桁だけなら1~9
上記の条件が()の中にグルーピングされながらパイプでor条件で繋がっています。
これで適切な月が取得できそうですね
日付にマッチする正規表現
これは月と同じ考えですね
(0[1-9]|[12][0-9]|3[01]|[1-9])日
ここは月と考え方は同じなのでスキップさせてもらいますね!
では和暦にマッチする正規表現を作りましょう!
和暦にマッチする正規表現
^[令和|平成|昭和]{2}(0[1-9]|1[0-9]|2[0-9]|3[0-1]|[1-9])年(0[1-9]|1[0-2]|[1-9])月(0[1-9]|[12][0-9]|3[01]|[1-9])日$
西暦での考えを和暦に当てはめてやってみました!
これは良い感じですねえ….
これで大丈夫なはずだ!
正規表現でマッチするかどうかをチェックをするには次のサイトがおすすめですよ!
僕は毎回↑のサイトから動作チェックをして実装にしていきました!
まとめ
なかなか正規表現は利用する機会が少なかったりしますが、
少しでも思い出せてよかったし、この書き方はこれからも自分で参考にしてみよっと
結構正規表現は大切だ