日付、日時の正規表現についてまとめ(基礎知識・正規表現例)

日付、日時の正規表現についてまとめ(基礎知識・正規表現例):


まえがき

  • PHP、JavaScriptで判定

    ( 正規表現チェッカーを使用
    http://okumocchi.jp/php/re.php)
  • 正規表現について、どうしても苦手意識があり、

    調べて出てくる多数の正規表現サンプルを見ても、

    やはり書くのに時間がかかってしまう...理解ができない...

    といったことがあったので、今後忘れないようにメモとして書かせて頂きます。

  • 「正しい形式しか許容しない」というのが前提になっております。


例(単体使用)

  • 「Y/m/d」ex).2018/01/01

  • ^→開始

  • $→終了

  • [0-9]→0~9の数字
  • /」の前にバックスラッシュが必要
  • { }の中に、数字の桁数を指定
  • 年は西暦のため、4文字→{4}

    時間、分は2文字→{2}

    (+(1回以上)だと2018/01/111111も許容してしまう

    先頭の0を表示しない場合は、1文字以上2文字以下となるため{1,2})
/^[0-9]{4}\/[0-9]{2}\/[0-9]{2}$/ 
  • 「h:i」 ex).02:11
/^[0-9]{2}:[0-9]{2}$/ 
  • 「Y/m/d - Y/m/d」(範囲指定)ex).2018/01/01 - 2018/01/02

  • \s→空白文字
/^[0-9]{4}\/[0-9]{2}\/[0-9]{2}\s-\s[0-9]{4}\/[0-9]{2}\/[0-9]{2}$/ 


例(組み合わせ)

  • 「Y/m/d - Y/m/d」か「Y/m/d h:i」どちらも許容する
  • 「- Y/m/d」と「h:i」を()?でくくる

  • ?→0回か1回
/^[0-9]{4}\/[0-9]{2}\/[0-9]{2}\s(-\s[0-9]{4}\/[0-9]{2}\/[0-9]{2})?([0-9]{2}:[0-9]{2})?$/ 

どうしても正規表現ってごちゃごちゃ文字が並んでいるイメージを抱いてしまい、

見た瞬間に思考が停止してしまいがちです。

ですが、簡単な表現を最初に書いて、([0-9]など、ぱっと見で意味が理解できる箇所)

正規表現チェッカーでその都度、動作確認をしていきながら書いていくのが

一番効率的だと漸く気がつけました。

参考リンク
https://javascript.programmer-reference.com/js-regexp-sample/
https://www.megasoft.co.jp/mifes/seiki/meta.html
https://www.sejuku.net/blog/22396

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)