【JavaScript】特定の文字に挟まれた文字列を取得する方法

Web開発において、特定の文字に挟まれた部分を抽出したい場面がよくあります。例えば、角括弧 [ と ] の間にある文字列だけを取得したい場合、JavaScriptでは正規表現を使うことで簡単に実現できます。本記事では、その方法を具体的なコード例と共に紹介します。

基本的な方法:角括弧に挟まれた文字列を取得する

まずは、基本的な例として、角括弧 [ と ] に挟まれた文字列を取得する方法を見ていきましょう。

const str = "このテキストの中に[抽出する文字列]があります。";
const match = str.match(/\[(.*?)\]/);

if (match) {
    const extracted = match[1];
    console.log(extracted); // "抽出する文字列"
} else {
    console.log("指定された文字に挟まれた文字列が見つかりませんでした。");
}
  • str.match(/\[(.*?)\]/): 正規表現を使って、角括弧に挟まれた部分を抽出しています。.*? は非貪欲モードを示し、できるだけ少ない文字をマッチさせます。
  • match[1]: match 配列の 1 番目の要素が、角括弧に挟まれた部分です。

このコードを使うと、最初に見つかった角括弧内の文字列が取得されます。

応用編:複数のマッチを取得する

次に、文字列内に複数のマッチが存在する場合に、それらすべてを取得する方法を紹介します。

const str = "複数の[文字列1]を抽出して[文字列2]みましょう。";
const matches = [...str.matchAll(/\[(.*?)\]/g)];

matches.forEach(match => {
    console.log(match[1]);
});

// 結果:
// "文字列1"
// "文字列2"
  • str.matchAll(/\[(.*?)\]/g): /g フラグを付けることで、文字列全体からすべてのマッチを取得します。matchAll はイテレータを返すため、スプレッド構文 […] を使って配列に変換しています。
  • matches.forEach(match => {…}): 取得した複数のマッチをループで処理し、それぞれのマッチ部分を出力します。

この方法を使えば、文字列中のすべてのマッチ箇所から文字列を抽出することができます。

まとめ

JavaScriptを使って、特定の文字に挟まれた文字列を取得する方法は、正規表現を利用することで簡単に実現できます。基本的な例から、複数のマッチを取得する応用まで、状況に応じた使い分けが重要です。これらのテクニックをマスターして、より効率的なコーディングを目指しましょう。