正規表現で使える特殊文字・オプションフラグ - Javascript

オプションフラグ

オプションフラグを使うことによってさまざまなことができるようになります。

オプションフラグ 内容
g グローバル検索を行う
i 大文字・小文字を区別しない検索を行う
m 行頭(^)や行末($)のマッチングが文字列の先頭・末尾だけではなく、各行の行頭・行末にもマッチする
d indices でマッチした文字列の開始・終了インデックスを取得できる
y 一致した文字を順に返す
s .(ドット)が改行文字に一致する
u unicode 対応

※ グローバル検索とは、指定した文字列が複数ある場合、すべてを置き換えます。

.(ドット)

改行文字以外の1文字に一致する。(s フラグが有効の場合は、空白にも一致)

script.js - Node.js

let str = "a";
let pattern = /../

console.log(pattern.test(str));

[]

a または b または c の1文字に一致する

script.js - Node.js

let str = "def";
let pattern = /[abc]/

console.log(pattern.test(str));

// 結果
// false

文字列が次の場合は、すべて「 true 」です。

let str = "adef";
let str = "adbefc";
let str = "ac";

[^]

a または b または c の1文字以外に一致する

script.js - Node.js

let str = "abcdef";
let pattern = /[^abc]/g;

console.log(str.match(pattern));

// 結果
// [ 'd', 'e', 'f' ]

[a-z]

-(ハイフン)は範囲を表します

script.js - Node.js

let str = "あいうえoかきくkeこ";
let pattern = /[a-z]/g;

console.log(str.match(pattern));

// 結果
// [ 'o', 'k', 'e' ]

\w

半角英数字またはアンダースコアの1文字に一致する。[a-zA-Z0-9_]と同じ

script.js - Node.js

let str = "あ_い%うえoかきくkEこ";
let pattern = /\w/g;

console.log(str.match(pattern));

// 結果
// [ '_', 'o', 'k', 'E' ]

\W

半角英数字またはアンダースコア以外の1文字に一致する

script.js - Node.js

let str = "あ_い%うえoかき#くkEこ";
let pattern = /\W/g;

console.log(str.match(pattern));

// 結果
//[
//  'あ', 'い', '%',
//  'う', 'え', 'か',
//  'き', '#',  'く',
//  'こ'
//]

\d

0 ~ 9 の半角の数値1文字に一致する

わかりづらいですが次のサンプルでは、9の部分は全角です。

script.js - Node.js

let str = "1あいうえお9";
let pattern = /\d/g;

console.log(str.match(pattern));

// 結果
// [ '1' ]

\D

0 ~ 9 の半角の数値以外の1文字に一致する

わかりづらいですが次のサンプルでは、9の部分は全角です。

script.js - Node.js

let str = "1あいうえお9";
let pattern = /\D/g;

console.log(str.match(pattern));

// 結果
// [ 'あ', 'い', 'う', 'え', 'お', '9' ]

\s

スペース、タブ、改ページ、改行の1文字に一致

わかりづらいですが次のサンプルでは、「 え 」の後のスペースは全角です。

script.js - Node.js

let str = `1    あ
い うえ お9\n`;
let pattern = /\s/g;

console.log(str.match(pattern));

// 結果
// [
//   ' ',  ' ',  ' ',
//   ' ',  '\n', ' ',
//   ' ', '\n'
// ]

\S

script.js - Node.js

スペース、タブ、改ページ、改行、以外の1文字に一致

let str = "1    あい うえ お9";
let pattern = /\S/g;

console.log(str.match(pattern));

// 結果
// [
//   '1',  'あ', 'い',
//   'う', 'え', 'お',
//   '9'
// ]

\n

改行文字に一致する

script.js - Node.js

let str = `HTML
CSS
Javas\ncript`
let pattern = /\n/g;

console.log(str.match(pattern));

// 結果
// [ '\n', '\n', '\n' ]

\r

キャリッジリターンに一致する

\t

タブに一致する

script.js - Node.js

let str = `HTML	CSS`
let pattern = /\t/g;

console.log(str.match(pattern));

// 結果
// [ '\t' ]

^

行頭に一致する

script.js - Node.js

let str = "abcdae"
let pattern = /a/g;

console.log(str.match(pattern));

// 結果
// [ 'a', 'a' ]

// .............................................................
let str2 = "abcdae"
let pattern2 = /^a/g;

console.log(str2.match(pattern2));

// 結果
// [ 'a' ]

$

行末に一致する

script.js - Node.js

let str = "abcadea"
let pattern = /a/g;

console.log(str.match(pattern));

// 結果
// [ 'a', 'a', 'a' ]

// .............................................................
let str2 = "abcadea"
let pattern2 = /a$/g;

console.log(str2.match(pattern2));

// 結果
// [ 'a' ]
// .............................................................
let str3 = `abca
adea`
let pattern3 = /a$/g;

console.log(str3.match(pattern3));

// 結果
// [ 'a' ]

{n} {m,n} {m,}

{n} は、直前の文字が n 回繰り返す場合に一致する

script.js - Node.js

let str = "abcaadea"
let pattern = /a{2}/g;

console.log(str.match(pattern));

// 結果
// [ 'aa' ]

// .............................................................
let str2 = "abcadea"
let pattern2 = /a{2}/g;

console.log(str2.match(pattern2));

// 結果
// null

{m,n} 直前の文字が m ~ n 回繰り返す場合に一致する

script.js - Node.js

let str = "abcaaaadea"
let pattern = /a{2,4}/g;

console.log(str.match(pattern));

// 結果
// [ 'aaaa' ]

{m,} 直前の文字が m 回以上繰り返す場合に一致する

script.js - Node.js

let str = "abcaaaadea"
let pattern = /a{2,}/g;

console.log(str.match(pattern));

// 結果
// [ 'aaaa' ]

+

1回以上の文字の繰り返しを表す

script.js - Node.js

let str = "abc";
let pattern = /a+/g;

console.log(str.match(pattern));

// 結果
// [ 'a' ]

// .............................................................
let str2 = "bbb";
let pattern2 = /a+/g;

console.log(str2.match(pattern2));
// 結果
// null

*(アスタリスク)

0 回以上の文字の繰り返しを表す

script.js - Node.js

let str = "aaaa";
let pattern = /a*/;

console.log(pattern.test(str));

// 結果
// true

// .............................................................
let str2 = "bbb";
let pattern2 = /a*/;

console.log(pattern2.test(str2));

// 結果
// true

?

直前の文字が 0 回または 1 回繰り返す場合に一致

script.js - Node.js

let str = "";
let pattern = /a?/g;

console.log(str.match(pattern));

// 結果
// [ '' ]

// .............................................................
let str2 = "aa";
let pattern2 = /a?/g;

console.log(str2.match(pattern2));

// 結果
// [ 'a', 'a', '' ]

()

グループ化します。

「 (じゃ)+ーん 」の場合、検索できる文字列は、「 じゃーん 」や「 じゃじゃーん 」になります。

script.js - Node.js

let str = "じゃーん";
let pattern = /(じゃ)+ーん/g;

console.log(str.match(pattern));

// 結果
// [ 'じゃーん' ]

// .............................................................
let str2 = "じゃじゃーん";
let pattern2 = /(じ)+ゃーん/g;

console.log(str2.match(pattern2));

// 結果
// [ 'じゃーん' ]

|(パイプ)

「 ab|ac 」の場合、ab または ac の文字列に一致

script.js - Node.js

let str = "abcdeac";
let pattern = /(a|c)/g;

console.log(str.match(pattern));

// 結果
// [ 'a', 'c', 'a', 'c' ]

\

特殊文字を文字列として表す場合に使用