LoginSignup
3
2

More than 3 years have passed since last update.

JavaScript 正規表現(RegExp:Regular Expression)メモ

Last updated at Posted at 2019-08-11

JavaScriptで利用できる主な正規表現パターン

パターン マッチする文字列
ABC 「ABC」という文字列
[ABC] A,B,Cのいずれか1文字
[^ABC] A,B,C以外のいずれか1文字
[A-Z] A〜Zの間の1文字
A|B|C A,B,Cのいずれか
X* 0文字以上のX
X? 0、または1文字のX
X+ 1文字以上のX
X{n} Xとn回一致
X{n,} Xとn回以上一致
X{m,n} Xとm〜n回一致
^ 行の先頭に一致
$ 行の末尾に一致
. 任意の1文字に一致
\w 大文字/小文字の英字、数字、アンダースコアに一致(=[A-Za-z0-9_])
\W 文字以外に一致(=[^\w])
\d 数字に一致(=[0-9])
\D 数字以外に一致(=[^0-9])
\n 改行(ラインフィード)に一致
\r 復帰(キャリッジリターン)に一致
\t タブ文字に一致
\s 空白文字に一致(=[\n\r\t\v\f])
\S 空白以外に一致(=[^\s])
\〜 「〜」で表される文字

オブジェクトの生成

var 変数名 = new RegExp('正規表現', 'オプション'); //コンストラクター

var 変数名 = /正規表現/オプション; // リテラル

正規表現のオプション

オプション 概要
g 文字列全体にマッチするか(無指定の場合、1度マッチした時点で処理を終了)
i 大文字/小文字を区別するか
m 複数行に対応するか(改行コードを行頭/行末と認識)
u Unicode対応(ES2015)

エスケープ

コンストラクター構文では「 \ 」、リテラル構文では「 / 」をエスケープする必要がある。

正規表現による検索・検証・置換・分割

String.match

String.matchメソッドはマッチした文字列を配列として取得する。
gオプションを無効にした場合、「最初にマッチした文字列全体」「サブマッチ文字列」を取得する。
サブマッチ文字列:正規表現パターンの中で丸カッコで示された部分(サブマッチパターン)に合致した部分文字列。マッチしている部分がない場合はundefined、複数マッチしている場合には最後にマッチしたものを保持する。)

str.match(pattern)
  // str:検索対象の文字列
  // pattern:正規表現

RegExp.exec

RegExp.execメソッドはgオプションの有無にかかわらず、1度の実行で1つの実行結果しか返さず、マッチした文字列全体とサブマッチ文字列を配列として返す。
execメソッド(RegExpオブジェクト)「最後にマッチした文字位置を記憶する」ため、次にexecメソッドを実行する場合、RegExpオブジェクトは「前回のマッチ位置から検索を再開」する。検索結果がない場合はnullを返す。

regexp.exec(str)
  // regexp:正規表現
  // str:検索対象の文字列

// 全てのマッチング結果を得る場合
while ((result = regexp.exec(str)) !== null){
  // 繰り返し処理
}

RegExp.test

RegExp.testメソッドを使うことで、単に正規表現にマッチしているかどうかを真偽値で返すことができる。

regexp.test(str)
  // regexp:正規表現
  // str:検索対象の文字列

String.search

String.searchメソッドは、指定した正規表現で最初にマッチした文字位置を返す。マッチした文字列が存在しない場合は戻り値として-1を返す。

str.search(pattern)
  // str:検索対象の文字列
  // pattern:正規表現

String.replace

String.replaceメソッドは、正規表現でマッチした文字列を置換することができる。
引数のrepには「\$1...$9」の特殊変数を埋め込むことができる。
特殊変数はサブマッチ文字列を保存するための変数。

str.replace(pattern, rep)
  // str:置き換え対象の文字列
  // pattern:正規表現
  // rep:置き換え後の文字列

String.split

String.splitメソッドは、正規表現で文字列を分割することができる。

str.split(sep[, limit])
  // str:分割対象の文字列
  // sep:区切り文字(正規表現)
  // limit:分割回数の上限

出典

[改訂新版]JavaScript本格入門 山田祥寛著

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2