ドメイン名の正規表現

広告

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

(2021 年 08 月 23 日公開 / 2021 年 08 月 23 日更新)

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

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

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

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。