9cubed
ブログ | Tailwind | Vite | Python | Node.js | Linux | PowerShell | その他 | 将棋ウォーズ | 歌の練習
< 前の記事

JavaScript - 10進数と16進数の変換

次の記事 >

JavaScript - 正規表現による文字列の置換

JavaScript

JavaScript - 正規表現による文字列の検索

公開日:2018-12-14
更新日:2019-05-13

1. 概要

正規表現で文字列を検索します。
該当するものがあるかどうかは search() で調べ、
ヒットした文字列を取得する場合は、match() を使います。
複数の検索結果や詳細な情報を取得したい場合には、RegExp の exec() を使用します。

文字列.search(/パターン/)
文字列.search(/パターン/フラグ)
文字列.match(/パターン/)
文字列.match(/パターン/フラグ)

var reg = RegExp('パターン', 'フラグ');
reg.exec(文字列);

2.1 サンプル - 文字列の検索

「DEF」と一致する文字列を検索します。

//           0123456789012345678
var index = "abc 0 ABC 1 def 2 DEF 3 xyz 9 XYZ".search(/DEF/);
console.log(index);  //18

通常、文字列は「"」か「'」で囲いますが、正規表現の場合は、「/」で囲います。
これを正規表現リテラルと呼び、正規表現が事前にコンパイルされます。
「"」で囲んでも実行結果は同じ結果になりますが、固定の正規表現を繰り返し実行する場合には、
「/」で囲んだ方が処理速度が速くなります。

また、/文字列/i のように、i と言うフラグを付けると、大文字小文字を無視して検索することができます。
以下の例では「DEF」で検索していますが、「def」が引っかかっています。
//           0123456789012
var index = "abc 0 ABC 1 def 2 DEF 3 xyz 9 XYZ".search(/DEF/i);
console.log(index);  //12

2.2 サンプル - 数字の検索

正規表現では、[0-9] で数字1文字を検索できます。

//           01234
var index = "abc 0 ABC 1 def 2 DEF 3 xyz 9 XYZ".search(/[0-9]/);
console.log(index);  //4

数字3文字の箇所を検索する場合には、[0-9][0-9][0-9] とします。
//           012345678901234567
var index = "abc 0 ABC 11 def 222 DEF 3333 xyz 9 XYZ".search(/[0-9][0-9][0-9]/);
console.log(index);  //17

また、[0-9]{3} のようにして、{} で文字数を指定することもできます。
//           012345678901234567
var index = "abc 0 ABC 11 def 222 DEF 3333 xyz 9 XYZ".search(/[0-9]{3}/);
console.log(index);  //17

2.3 サンプル - パターンに一致した文字列の取得

match() を使うと、どんな文字列でヒットしたのかを取得できます。
また、フラグに g を付けると、全てのヒットした箇所を取得できます。
付けない場合は、最初に見つかった時点で検索が終わります。
以下の例では、フラグとして ig を付けて、大文字小文字を無視して、文字列全体を検索しています。
var result = "abc 0 ABC 1 def 2 DEF 3 xyz 9 XYZ".match(/DEF/ig);
console.log(result.length); //ヒットした数           : 2
console.log(result[0]);     //ヒットした1番目の文字列 : def
console.log(result[1]);     //ヒットした2番目の文字列 : DEF

2.4 サンプル - 複数の検索結果の取得

RegExp の exec() を使用すると、複数の検索結果を取得できます。

//                 1         2
//       01234567890123456789012
var s = "123 abc 456 DEF 789 ghi";
var regExp = RegExp("[a-z]", "g");
while (result = regExp.exec(s)) {
console.log("[" + result.index + "] = "  + result[0]);
}

[4] = a
[5] = b
[6] = c
[20] = g
[21] = h
[22] = i


< 前の記事

JavaScript - 10進数と16進数の変換

次の記事 >

JavaScript - 正規表現による文字列の置換

YouTube X

新着一覧

  • SCSS のインストールVite
  • Tailwind CSS のプロジェクトの作成Tailwind
  • TypeScriptのプロジェクトの作成Vite
  • Flask のインストールと動作確認Python
  • 簡易Webサーバーの作成Python
  • pipeline で文章の生成Python
  • pipeline で文章の要約Python
  • 音声から文字起こしPython
  • Node.js のインストールNode.js
  • .ps1(PowerShellスクリプト)を実行可能にするPowerShell

アーカイブ

  • 2025/12
  • 2025/11
  • 2025/10
  • 2025/09
  • 2025/08

以前のカテゴリー一覧

  • CakePHP3
  • CentOS7
  • HTML・CSS・JavaScript
  • Haskell
  • JavaScript
  • Kotlin
  • Laravel5
  • PHP
  • Python
  • Ruby
  • RubyOnRails5
  • TypeScript
  • Vue.js
  • Webサーバ講座
  • Webプログラミング講座
  • jQuery
  • linux
  • パソコン講座
  • ブログ
  • プログラミング講座
  • メモ帳作成講座
  • 数学

Copyright © 9cubed. All Rights Reserved.

プライバシーポリシー 利用規約
▲