0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

正規表現でIPアドレス[IPv4]を短く書く方法《JavaScript》

Last updated at Posted at 2025-10-14

はじめに

正規表現 を使って、IPアドレス[IPv4](0.0.0.0~255.255.255.255)をより短く書く方法をまとめました。

【結論】正規表現でIPアドレスを短く書く

正規表現 (JavaScript)[文字数 (77文字)]
^(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])$

上記の正規表現では、[0~255.]を3回繰り返した後に[0~255]を付け足すという書き方で、IPアドレス【0~255.0~255.0~255.0~255】にマッチさせています。

正規表現の動作確認の例

正規表現チェッカー|WWWクリエイターズ
https://www-creators.com/tool/regex-checker?s0=1.1.1.1&s1=255.255.255.255&s2=1.1.1.1.&s3=1.1.1.1.1&s4=01.1.1.1&s5=256.1.1.1&s6=1.1.1.01&s7=1.1.1.256&r=%5E((%5B1-9%5D%3F%5Cd%7C1%5Cd%7B2%7D%7C2%5B0-4%5D%5Cd%7C25%5B0-5%5D)%5C.)%7B3%7D(%5B1-9%5D%3F%5Cd%7C1%5Cd%7B2%7D%7C2%5B0-4%5D%5Cd%7C25%5B0-5%5D)%24

上記のサイトでは、正規表現がどんな文字列にマッチするのかを確認できます。上記の正規表現の場合、「0~255の数字数字の間の.(ドット)」だけが、正規表現にマッチし、「0~255以外の数字」「0以外で先頭に0がついた数字」「最後が.(ドット)の場合」「数字が4つ以上ある場合(例:10.20.30.40.50)」などは、正規表現にマッチしません。

正規表現でIPアドレス(0-255.)を短く書く

① 正規表現の文字数 (53文字)
^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.$

--✂-- もっと短く --✂--
0の位の『[0-9]』と10の位の『[1-9][0-9]』を ? でまとめる

② 正規表現の文字数 (48文字)
^([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.$

--✂-- もっと短く --✂--
100の位の『[0-9][0-9]』を {2} でまとめる

③ 正規表現の文字数 (46文字)
^([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.$

--✂-- もっと短く --✂--
『[0-9]』を同じ意味を持つ正規表現『\d』に書き換える

④ 正規表現の文字数 (37文字)
^([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])\.$

正規表現④(37文字)は、正規表現①(53文字)と比べて文字数が16文字短くなりました。

正規表現でIPアドレス(0-255.0-255.0-255.0-255)を短く書く

① 正規表現の文字数 (208文字)
^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$

--✂-- もっと短く --✂--
0の位の『[0-9]』と10の位の『[1-9][0-9]』を ? でまとめる

② 正規表現の文字数 (188文字)
^([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$

--✂-- もっと短く --✂--
100の位の『[0-9][0-9]』を {2} でまとめる

③ 正規表現の文字数 (180文字)
^([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$

--✂-- もっと短く --✂--
『[0-9]』を同じ意味を持つ正規表現『\d』に書き換える

④ 正規表現の文字数 (144文字)
^([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])\.([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])\.([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])\.([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])$

--✂-- もっと短く --✂--
3回繰り返す『([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])\.』を {3} でまとめる

⑤ 正規表現の文字数 (77文字)
^(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])$

正規表現⑤(77文字)は、正規表現①(208文字)と比べて文字数が131文字短くなりました。

上記の正規表現でヒットしない文字の例

  • 空の場合
  • 数字とドット以外の文字
  • 0~255以外の数字
  • 0以外で先頭に0がついた数字(例:03)
  • 最後が.(ドット)の場合
  • .(ドット)の数が少なすぎる場合
  • .(ドット)の数が多すぎる場合
  • 数字が4つ以上ある場合(例:10.20.30.40.50)

正規表現が、どんな文字列にマッチしてどんな文字列にマッチしないのか確認したい場合は、正規表現チェッカー|WWWクリエイターズというサイトが便利です。

関連サイト

正規表現チェッカー|WWWクリエイターズ
https://www-creators.com/tool/regex-checker

今回掲載した正規表現のチェック(確認)に利用。1つの正規表現で、色んな文字列をチェックできる点が便利。これにはヒットするが、あれにはヒットしないというのが一目で分かり安心できる。チェック結果をURLリンクで共有できる点も便利。


正規表現サンプル集|メガソフト株式会社
https://www.megasoft.co.jp/mifes/seiki/meta.html


正規表現構文早見表 - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_expressions/Cheatsheet

正規表現で使われる文字(「?」「{2}」「\d」など)の意味を分かりやすく紹介しているサイト。

(text_sakura)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?