JavaScript で正規表現のドット(.)が改行にマッチしない場合の対処
カテゴリ:JavaScript
replaceALL 関数で HTML の pre タグ内の文字を置換しようと、以下のような正規表現を設定したとします。/<pre>(.*?)<\/pre>/g
上記の正規表現は例えば以下にはマッチします。
<pre>Test</pre>
しかし、改行を含む以下にはマッチしません。つまりドット(.)は複数行に跨る文字列にはマッチしません。
<pre>
Test
</pre>
複数行に跨る文字列にマッチさせるには以下のように s フラグを付与します。
/<pre>(.*?)<\/pre>/gs
s フラグは正に、ドット(.)が改行文字に一致するようにするフラグです。
コード例)
function replacePre(text) {
const originalString = text;
const pattern = /<pre>(.*?)<\/pre>/gs;
const newString = originalString.replaceAll(pattern, "Matched!");
return newString;
}
str = "<pre>\nTest\n</pre>"
console.log(replacePre(str));
実行例)
$ node replacepre.js
Matched!
公開日時:2025年05月05日 12:04:36
最終更新日時:2025年05月06日 19:03:54