JavaScriptでURL文字列が絶対URLか相対URLかを判定する方法
Web開発では、渡された文字列が絶対URL(スキームから始まる完全なアドレス)なのか、相対URL(パスのみのアドレス)なのかを判別したい場面があります。
この判定を行う最もシンプルで確実な方法は、正規表現(RegExp)を使うことです。URLが https:// または https:// で始まっているかどうかをチェックすることで、絶対URLかどうかを判断できます。
使用する正規表現
以下の正規表現パターンを使用します。
/^https?:\/\//i
このパターンの意味は次のとおりです。
^:文字列の先頭にマッチさせるhttps?:httpまたはhttpsにマッチ(s?は「sがあってもなくてもよい」を意味):\/\/:直後に://が続くことを確認iフラグ:大文字・小文字を区別しない
サンプルコード
実際に2つのURL文字列を判定してみましょう。
const regularExpressionForURL = /^https?:\/\//i;
const originalURL1 = "https://www.example.com/index"; // 絶対URL
const originalURL2 = "/index"; // 相対URL
if (regularExpressionForURL.test(originalURL1)) {
console.log("これは絶対URLです");
} else {
console.log("これは相対URLです");
}
if (regularExpressionForURL.test(originalURL2)) {
console.log("これは絶対URLです");
} else {
console.log("これは相対URLです");
}
test() メソッドは、文字列が正規表現パターンに一致すれば true、一致しなければ false を返します。その結果をもとに、絶対URL・相対URLを振り分けています。
プログラムの実行方法
上記のコードをファイル(例:demo266.js)として保存し、Node.js環境で以下のコマンドを実行します。
node demo266.js
実行結果
コンソールには次のように出力されます。
PS C:\Users\Amit\javascript-code> node demo266.js
これは絶対URLです
これは相対URLです
https://www.example.com/index は https:// で始まるため絶対URLと判定され、/index はスキームを持たないため相対URLと判定されました。
まとめ
正規表現 /^https?:\/\//i と test() メソッドを組み合わせることで、URL文字列が絶対URLか相対URLかを簡単かつ高速に判定できます。フォームのバリデーションやリンク処理など、さまざまな場面で活用できるテクニックなので、ぜひ覚えておきましょう。
-
JavaScriptで文字列を検索する方法【search()メソッドの使い方を解説】
JavaScriptで文字列を検索する方法 JavaScriptで文字列の中から特定の文字列を探すには、search()メソッドを使用します。このメソッドは、引数に渡した文字列(または正規表現)が対象の文字列内で最初に一致した位置(インデックス)を返し、見つからなかった場合は -1 を返します。 以下は、JavaScriptで文字列を検索するサンプルコードです。 サンプルコード <!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8" />
-
文字列をJavaScriptオブジェクトに変換する方法【JSON.parse()の使い方】
JavaScriptでJSON形式の文字列をオブジェクトに変換するには、JSON.parse()メソッドを使用します。このメソッドは、引数に渡された文字列を解析(パース)し、対応するJavaScriptオブジェクトを返します。 サンプルコード <!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <title>Docum