JavaScript正規表現変数活用
JavaScriptにおける正規表現での変数の使用方法
JavaScriptでは、正規表現に変数を組み込むことで、より柔軟で動的なパターンマッチングを実現できます。
基本的な方法
テンプレートリテラルを使用する:
const searchTerm = "apple"; const regex = new RegExp(`\\b${searchTerm}\\b`);
\b
は単語境界を表し、searchTerm
は変数です。- この正規表現は、単語として"apple"を含む文字列にマッチします。
RegExp
コンストラクタを使用する:const searchTerm = "banana"; const regex = new RegExp("\\b" + searchTerm + "\\b");
- 同じ目的を達成しますが、テンプレートリテラルほど簡潔ではありません。
注意事項
- フラグ
正規表現コンストラクタの第2引数にフラグを指定できます。例えば、g
フラグはグローバル検索、i
フラグは大文字小文字を無視します。 - エスケープ
正規表現の特殊文字(例えば、^
,$
,*
,+
,?
,.
,|
,(
,)
,[
,]
,{
,}
,\
)を文字として使用したい場合、エスケープが必要です。
例: 動的な検索
function search(text, searchTerm) {
const regex = new RegExp(searchTerm, "i"); // 大文字小文字を無視
const matches = text.match(regex);
return matches || [];
}
const text = "Apple is a fruit. banana is another fruit.";
const searchTerm = "apple";
const results = search(text, searchTerm);
console.log(results); // ["Apple"]
この例では、検索用語を動的に指定し、大文字小文字を無視して検索を行います。
function search(text, searchTerm) {
const regex = new RegExp(searchTerm, "i"); // 大文字小文字を無視
const matches = text.match(regex);
return matches || [];
}
const text = "Apple is a fruit. banana is another fruit.";
const searchTerm = "apple";
const results = search(text, searchTerm);
console.log(results); // ["Apple"]
解説
matches || []
:matches
がnull
の場合、空の配列を返します。
text.match(regex)
:text
内でregex
にマッチする部分配列を返します。
new RegExp(searchTerm, "i")
:searchTerm
を正規表現として作成し、i
フラグを指定して大文字小文字を無視します。
search
関数:text
: 検索対象の文字列searchTerm
: 検索する単語
例2: テンプレートリテラルを使用した正規表現
const searchTerm = "apple";
const regex = new RegExp(`\\b${searchTerm}\\b`);
- テンプレートリテラルを使用することで、変数を直接正規表現に埋め込むことができます。
例3: 正規表現コンストラクタを使用した正規表現
const searchTerm = "banana";
const regex = new RegExp("\\b" + searchTerm + "\\b");
- 変数を文字列として連結して正規表現のパターンを構成します。
RegExp
コンストラクタを使用して、正規表現を作成します。
正規表現オブジェクトのメソッド
JavaScriptの正規表現オブジェクトには、test()
やexec()
などのメソッドがあり、これらを使用して変数を組み込んだ正規表現を評価することができます。
const searchTerm = "apple";
const regex = new RegExp("\\b" + searchTerm + "\\b");
if (regex.test("I like apples.")) {
console.log("Match found!");
}
正規表現フラグ
正規表現フラグを使用して、正規表現の動作を制御することができます。例えば、g
フラグを使用すると、グローバルマッチングが可能になります。
const searchTerm = "apple";
const regex = new RegExp("\\b" + searchTerm + "\\b", "g");
const text = "I like apples. I also like pears.";
const matches = text.match(regex);
console.log(matches); // ["apple", "apple"]
正規表現の文字クラス
正規表現の文字クラスを使用して、複数の文字をマッチさせることができます。変数を組み合わせて文字クラスを作成することもできます。
const vowels = "aeiou";
const regex = new RegExp("[^" + vowels + "]+");
const text = "Hello, world!";
const matches = text.match(regex);
console.log(matches); // ["H", "ll", "w", "rld"]
正規表現のキャプチャグループ
正規表現のキャプチャグループを使用して、マッチした部分文字列を抽出することができます。変数を組み合わせてキャプチャグループを作成することもできます。
const searchTerm = "apple";
const regex = new RegExp("\\b(" + searchTerm + ")s\\b");
const text = "apples are delicious.";
const matches = text.match(regex);
console.log(matches[1]); // "apple"
javascript regex