【JavaScript】否定先読みを使って、別の文字に続く特殊文字をすべて置き換える方法
はじめに
JavaScriptで文字列を処理していると、「<」などの特殊文字が連続して含まれているケースに遭遇することがあります。本記事では、否定先読み(ネガティブ・ルックアヘッド)を使った正規表現と replace() メソッドを組み合わせて、特殊文字の直後に別の文字が続く場合のみスペースを挿入する方法を解説します。
まず、例として次のように特殊文字「<」が連続した文字列を用意します。
var sentence = '<My<Name<is<John<Doe';
replace() と正規表現による置換処理
この問題を解決するには、replace() メソッドと正規表現 /<(?!\s)/g を使用します。「<」の後に空白文字が続いていない場合だけマッチし、該当箇所を「< 」(記号+半角スペース)に置き換えることで、単語ごとに区切られた読みやすい文字列になります。
正規表現の構成要素
- <:リテラルの「<」にマッチします
- (?!\s):否定先読み。直後が空白文字でない場合にのみマッチを成立させます
- g フラグ:文字列全体を対象にグローバルな検索・置換を行います
サンプルコード
var sentence = '<My<Name<is<John<Doe'; var regularExpresion = /<(?!\s)/g; var result = sentence.replace(regularExpresion, "< "); console.log(result);
プログラムの実行方法
上記のプログラムを実行するには、Node.js環境で以下のコマンドを使用します。
node fileName.js
ここでは、ファイル名を demo271.js として保存しています。
実行結果
コンソールには以下の出力が表示されます。各「<」の直後にスペースが挿入され、可読性の高い文字列になっていることが確認できます。
PS C:\Users\Amit\javascript-code> node demo271.js < My< Name< is< John< Doe
まとめ
否定先読み (?!\s) を活用することで、「特定の文字が続く場合のみ」を条件とした柔軟な文字列置換が可能になります。この手法は、データクレンジングやログ整形など、実際の開発現場でも幅広く応用できるテクニックです。
-
【JavaScript】filter()を使って別の配列の全要素で配列をフィルタリングする方法
JavaScriptでは、filter()メソッドを使うことで、ある配列から別の配列に含まれる要素をすべて除外できます。本記事では、具体的なサンプルコードとともにその手順をわかりやすく解説します。フィルタリングの例まず、1つ目の配列に以下の要素が格納されているとします。[100, 110, 150, 180, 190, 175]続いて、2つ目の配列には以下の要素が入っています。[100, 150, 175]この2つ目の配列に含まれる要素を、1つ目の配列からすべて取り除きたいケースを考えてみましょう。このような場合、filter()メソッドが便利です。filter()は第2引数にオブジェクトを渡
-
JavaScriptのRegExpで文字列内の複数の単語を一括置換する方法を解説
はじめにJavaScriptでは、正規表現(RegExp)を使うことで、文字列の中から複数の特定の単語を一度に検出し、まとめて別の値に置き換えることができます。この記事では、配列に格納された複数のキーワードを、RegExpオブジェクトとreplace()メソッドを組み合わせて一括置換する方法を解説します。やりたいことたとえば、次のような文字列があるとします。var sentence = My Name is John Smith. I live in UK. My Favourite Subject is JavaScript.この文章の中から、以下の配列に含まれるすべての単語を見つけ出し、「