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

JavaScriptの正規表現における\dと\Dの違いを徹底解説

\dと\Dの違いとは?

JavaScriptの正規表現には、\d\Dという対になるパターンがあります。この2つはまったく逆の働きをするのが大きな特徴です。\dはテキスト内の数字(0〜9)にマッチし、\D数字以外の文字(アルファベット、記号、スペースなど)にマッチします。

これらのパターンは、グローバル検索フラグである「g」と組み合わせて使われることが多く、これによりテキスト全体から該当するすべての文字を抽出できます。gフラグを使わない場合、最初にマッチした1文字だけが返される点に注意しましょう。

書式1:\d(数字にマッチ)

new RegExp("\\d", "g");

書式2:\D(数字以外にマッチ)

new RegExp("\\D", "g")

例1:\dで数字をすべて抽出する

次の例では、「\d」をグローバルフラグ「g」と組み合わせて使い、指定したテキストからすべての数字を取得しています。

<html>
<body>
<script>
    var text = "one has to score 760+ in gmat to get into ivy colleges";
    var regpat = /\d/g;
    var result = text.match(regpat);
    document.write(result);
</script>
</body>
</html>

出力結果

7,6,0

テキスト中の「760」という数字が1文字ずつ抽出され、配列として返されていることがわかります。

例2:\Dで数字以外の文字をすべて抽出する

次の例では、「\D」をグローバルフラグ「g」と組み合わせて使い、数字以外のすべての文字(t、y、^、&など)を取得しています。数字以外にはハイフンやキャレットなどの記号に加えて、スペースも含まれるという点がポイントです。

<html>
<body>
<script>
   var text = "one has to score 760+ in gmat to get into ivy colleges";
   var regpat = /\D/g;
   var result = text.match(regpat);
   document.write(result);
</script>
</body>
</html>

出力結果

o,n,e, ,h,a,s, ,t,o, ,s,c,o,r,e, ,+, ,i,n, ,g,m,a,t, ,t,o, ,g,e,t, ,i,n,t,o, ,i,v,y, ,c,o,l,l,e,g,e,s

このように、元のテキストから数字「7」「6」「0」だけが除外され、残りの英字・記号・スペースがすべて抽出されています。

まとめ

\dと\Dは互いに補完関係にある正規表現パターンです。「数字だけを抜き出したい」場合は\dを、「数字を除いた部分を扱いたい」場合は\Dを使い分けることで、テキスト処理を効率的に行えます。実務では、入力値のバリデーションやデータのクリーニングなど、さまざまな場面で活用できるので、ぜひ覚えておきましょう。

  1. JavaScriptのPromise(プロミス)とは?非同期処理の基本と使い方を解説

    JavaScriptのPromise(プロミス)は、作成された時点ではまだ値が確定していない非同期処理を扱うためのオブジェクトです。APIリクエストやファイルの読み込みなど、完了まで時間がかかる処理について、「いずれ結果を受け取る」という約束を表現します。Promiseは、以下の3つの状態を持ちます。pending(保留中):処理がまだ完了しておらず、成功も失敗も確定していない初期状態fulfilled(履行済み):処理が正常に完了し、結果の値が利用できる状態rejected(拒否済み):処理が失敗し、エラーの理由が利用できる状態一度fulfilledまたはrejectedに遷移したPromi

  2. JavaScriptのWeakSetとは?特徴と主要メソッド、サンプルコードをわかりやすく解説

    JavaScriptのWeakSet(ウィークセット)は、オブジェクトを格納するためのコレクションです。Setと同様に、同じオブジェクトを重複して保存することはできません。WeakSetの主な特徴弱い参照で保持する:WeakSet内のオブジェクトへの参照が他に存在しなくなると、ガベージコレクションによって自動的にメモリから解放されます。そのため、メモリリークを防ぎたい場面で役立ちます。オブジェクトのみ格納可能:数値や文字列などのプリミティブ値は追加できません。列挙できない:Setのようなsizeプロパティや反復処理の仕組みを持たず、格納されている要素の一覧を取得することはできません。WeakS