ドメイン名の正規表現

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

(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 )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。