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

JavaScriptで「数字だけではない文字列」を正規表現でマッチさせる方法

JavaScriptでは、正規表現を使うことで特定のパターンに一致する文字列を柔軟に抽出できます。本記事では、文字列の中から「完全には数字でない」部分(数字以外の文字を含む値)をマッチさせて取り出す方法を解説します。

対象となるサンプル文字列

まず、次のような複雑な文字列があったと仮定しましょう。

var values = 'studentId:"100001",studentName:"John Smith",isTopper:true,uniqueId:10001J-10001,marks:78,newId:"4678"';

この文字列には 10000178 のような純粋な数値だけでなく、10001J-10001 のように英字やハイフンが混在した値も含まれています。ここから「数字だけではない文字列」のみを抽出するのが今回の目的です。

正規表現によるマッチングの実装例

文字列の照合には正規表現を使用します。以下がそのサンプルコードです。

コード例

var regularExpression = /(?<=:)(?!(?:null|false|true|\d+),)[\w-]+(?=,)/g;
var values = 'studentId:"100001",studentName:"John Smith",isTopper:true,uniqueId:10001J-10001,marks:78,newId:"4678"';
console.log("Original Value="+values);
console.log("The string that are not entirely digits=");
console.log(values.match(regularExpression));

プログラムの実行方法

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

node fileName.js.

ここでは、ファイル名を demo187.js として保存しています。

実行結果

このプログラムを実行すると、コンソールに次のような出力が表示されます。

PS C:\Users\Amit\javascript-code> node demo187.js
Original Value=studentId:"100001",studentName:"John
Smith",isTopper:true,uniqueId:10001J-10001,marks:78,newId:"4678"
The string that are not entirely digits=
[ '10001J-10001' ]

正規表現の各要素の解説

使用した正規表現 /(?<=:)(?!(?:null|false|true|\d+),)[\w-]+(?=,)/g の構成要素は以下のとおりです。

  • (?<=:):後読みアサーション。直前にコロン(:)が存在する位置にのみマッチします。
  • (?!(?:null|false|true|\d+),):否定先読みアサーション。nullfalsetrue、および純粋な数値(\d+)で終わる部分をマッチ対象から除外します。
  • [\w-]+:英数字・アンダースコア・ハイフンで構成される1文字以上の文字列にマッチします。
  • (?=,):先読みアサーション。直後にカンマ(,)が続くことを条件とします。
  • /g:グローバルフラグにより、文字列全体に対して繰り返しマッチングを行います。

この仕組みによって、純粋な数値である 10000178 は除外され、英字とハイフンを含む 10001J-10001 のみが配列として返されます。match() メソッドと組み合わせれば、複雑な文字列から目的の値だけを効率的に取り出せるため、データの解析やバリデーション処理などにも応用できます。

  1. JavaScriptで2つ以上の文字列を結合する3つの方法(+演算子・+=・concat())

    JavaScriptで2つ以上の文字列を結合する方法を、具体的なコード例とともにわかりやすく解説します。 JavaScriptには、2つ以上の文字列を結合するためのさまざまな方法があります。代表的なのは、プラス演算子 +、プラスイコール演算子 +=、そして concat() メソッドの3つです。 なお、+ と += は代入演算子と呼ばれます。 それでは、3つの方法をすべて実際に試してみましょう! プラス演算子(+) たとえば、firstName と lastName という2つの変数があり、その結合した値を fullName という3つ目の変数に代入したいとします。この場合、次のように書くこと

  2. JavaScriptでアクセント付き文字を含む文字列を並べ替える方法

    JavaScriptの標準的な sort() メソッドは、文字列をUnicodeコードポイントの順序に基づいて比較します。そのため、「é」や「ó」のようなアクセント付き文字を含む文字列を単純にソートすると、期待通りのアルファベット順にならないことがあります。この問題を解決するには、localeCompare() メソッドを使用します。このメソッドは、指定されたロケールの言語規則に従って文字列を比較できるため、アクセント付き文字も正しく並べ替えられます。localeCompare() の基本的な使い方以下は、スペイン語のアクセント付き文字を含む配列を localeCompare() を使ってソー