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

なお、レンタルサーバー選びで迷ったらこちらの記事で主要レンタルサーバーのプランと料金を比較していますので、是非参考にしてみてください。

JavaScriptに戻る

このページのトップに戻る