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

JavaScriptで特殊文字を分離する方法:match()と正規表現の使い方

はじめに

文字列の中に含まれる特殊文字(記号)を分離したい場合、JavaScriptのmatch()メソッドと正規表現を組み合わせることで簡単に実現できます。本記事では、配列内の文字列から特殊文字を切り分ける方法を、具体的なコード例と実行結果とともに解説します。

match()と正規表現を使った分離の基本構文

特殊文字を分離するには、正規表現とmatch()メソッドを併用します。基本的な構文は以下の通りです。

yourStringName.flatMap(anyVariableName => yourVariableName.match(/\w+|\W+/g));

ここで使用している正規表現/\w+|\W+/gの意味は次の通りです。

  • \w+:英数字およびアンダースコア(_)の連続にマッチ
  • \W+:上記以外の文字、つまり特殊文字や記号の連続にマッチ
  • gフラグ:文字列全体から繰り返しマッチングを行う

さらにflatMap()を組み合わせることで、配列の各要素に対してマッチ結果を取得し、それらを一つの平坦な配列にまとめられます。

サンプルデータの準備

今回は、値の間に特殊文字が含まれる以下の配列を例にします。

var allNames = ['John-Smith', 'David', 'Carol%Taylor'];

この配列には「-」(ハイフン)や「%」(パーセント記号)といった特殊文字が含まれています。これらを通常の文字列部分と分離して出力するのが目的です。

コード例

実際にテキストと特殊文字を分離するコードは以下のようになります。

var allNames = ['John-Smith', 'David', 'Carol%Taylor'];
var output = allNames.flatMap(obj => obj.match(/\w+|\W+/g));
console.log(output);

このプログラムを実行するには、Node.js環境で以下のコマンドを使用します。

node fileName.js

ここでは、ファイル名を「demo32.js」としています。

実行結果

上記のプログラムを実行すると、以下のような出力が得られます。

PS C:\Users\Amit\JavaScript-code> node demo32.js
[
  'John', '-',
  'Smith', 'David',
  'Carol', '%',
  'Taylor'
]

出力を確認すると、「John-Smith」が「John」「-」「Smith」に、「Carol%Taylor」が「Carol」「%」「Taylor」にそれぞれ分離されていることがわかります。ハイフンやパーセント記号などの特殊文字だけが独立した要素として抽出され、英数字のみで構成される部分とは区切られています。

まとめ

このように、match()メソッドと正規表現/\w+|\W+/g、そしてflatMap()を組み合わせれば、文字列中の特殊文字を手軽に分離できます。データの前処理や入力値の検証など、さまざまな場面で役立つテクニックなので、ぜひ覚えておきましょう。

  1. JavaScript正規表現のreplace()で特殊文字を置き換える方法を解説

    JavaScriptで文字列に含まれる特殊文字(&やカンマなど)を削除・置き換えしたい場合、正規表現と組み合わせた replace() メソッドを使うのが最もシンプルで効率的な方法です。この記事では、文字列の先頭にある「&」と、文字列内のすべてのカンマ「,」を一括で除去する具体例を紹介します。基本構文正規表現を使った replace() の基本的な書式は以下のとおりです。anyVariableName.replace(/(^\anySymbol)|,/g, );このパターンを分解して見てみましょう。(^\&) … 文字列の先頭(^)にある「&」にマッチします。|

  2. 【JavaScript】否定先読みを使って、別の文字に続く特殊文字をすべて置き換える方法

    はじめにJavaScriptで文字列を処理していると、「<」などの特殊文字が連続して含まれているケースに遭遇することがあります。本記事では、否定先読み(ネガティブ・ルックアヘッド)を使った正規表現と replace() メソッドを組み合わせて、特殊文字の直後に別の文字が続く場合のみスペースを挿入する方法を解説します。まず、例として次のように特殊文字「<」が連続した文字列を用意します。var sentence = <My<Name<is<John<Doe;replace() と正規表現による置換処理この問題を解決するには、replace() メソッドと正