JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

【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) を活用することで、「特定の文字が続く場合のみ」を条件とした柔軟な文字列置換が可能になります。この手法は、データクレンジングやログ整形など、実際の開発現場でも幅広く応用できるテクニックです。

  1. 【JavaScript】filter()を使って別の配列の全要素で配列をフィルタリングする方法

    JavaScriptでは、filter()メソッドを使うことで、ある配列から別の配列に含まれる要素をすべて除外できます。本記事では、具体的なサンプルコードとともにその手順をわかりやすく解説します。フィルタリングの例まず、1つ目の配列に以下の要素が格納されているとします。[100, 110, 150, 180, 190, 175]続いて、2つ目の配列には以下の要素が入っています。[100, 150, 175]この2つ目の配列に含まれる要素を、1つ目の配列からすべて取り除きたいケースを考えてみましょう。このような場合、filter()メソッドが便利です。filter()は第2引数にオブジェクトを渡

  2. JavaScriptのRegExpで文字列内の複数の単語を一括置換する方法を解説

    はじめにJavaScriptでは、正規表現(RegExp)を使うことで、文字列の中から複数の特定の単語を一度に検出し、まとめて別の値に置き換えることができます。この記事では、配列に格納された複数のキーワードを、RegExpオブジェクトとreplace()メソッドを組み合わせて一括置換する方法を解説します。やりたいことたとえば、次のような文字列があるとします。var sentence = My Name is John Smith. I live in UK. My Favourite Subject is JavaScript.この文章の中から、以下の配列に含まれるすべての単語を見つけ出し、「