ドメイン名の正規表現

正規表現のサンプルの中でドメイン名にマッチする正規表現について解説します。

(Last modified: )

ドメイン名にマッチする正規表現

ドメイン名およびサブドメイン名は次のような値となります。

example.com
sub.example.jp

ドメイン名およびサブドメイン名にマッチする正規表現は次のようになります。

^([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*\.)+[a-zA-Z]{2,}$

以下解説と前提条件です。

ドメイン名はトップレベルドメイン(一番右側の部分で使用できる文字はアルファベット(a-z)となっており、トップレベルドメイン以外のラベルについては数字(0-9)やハイフン(-)も利用できます。ただしハイフンはラベルの先頭と最後では使用できません。

※ ドメイン名には ASCII 文字だけでなく漢字など色々な言語が使用可能ですが、ここでは考慮に入れていません。

トップレベルドメインについては 2 文字以上、それ以外のラベルについては 1 文字以上という制限を考慮すると、正規表現は次のようになります。

それ以外のラベル部分
([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*\.)+

トップレベルドメイン部分
[a-zA-Z]{2,}

これに文字列の先頭にマッチするキャレット( ^ )と文字列の末尾にマッチするドル記号を( $ )を追加して組み合わせたものがドメイン名を表す正規表現となります。

サンプル

JavaScript を使って簡単な正規表現のサンプルを作成してみます。

const regex = /^([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*\.)+[a-zA-Z]{2,}$/;

regex.test('example.com');
--> true
regex.test('sub.example-2048.jp');
--> true
regex.test('examplejp');
--> false // トップレベルドメインがない
regex.test('example.c');
--> false // トップレベルドメインの文字数

ドメイン名にマッチする正規表現(1)

-- --

正規表現のサンプルの中でドメイン名にマッチする正規表現について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。