今回から「正規表現」についてご紹介させて頂きます。
「正規表現」について詳しくご紹介すると、膨大な量になってしまい、かえってよく分からなくなってしまう可能性がありますので、可能な限り基本的な操作に絞ってご説明させて頂きます。
まずは正規表現の基本となる用語やメソッドを見ていきましょう。
正規表現とは
「正規表現」とは、文字列内で文字の組み合わせを照合するために用いられるパターンのことを言います。
正規表現の構文
正規表現リテラル
let reg = /…/ ;
パターンの値を「/」スラッシュで囲みます。
これはとても単純な記述ですが、とりあえず「/」で囲むということを覚えておいてください。
RegExp
let reg = new RegExp(…);
RegExpオブジェクトのコンストラクタ関数を呼び出して記述する方法です。
RegExpは、「Regular Expression(正規表現)」の略で、「レゲックス」や訳さずに「レギュラーエクスプレッション」と読んだりします。
「…」の部分は、文字列として指定する場合は、「/fruits/」または「’fruits’」と記述します。
クオテーションで囲った場合は、スラッシュが必要ない点に注意してください。
正規表現リテラル、RegExp共に、下で説明しますが、検索のオプションである「フラグ」を記述することが出来ます。
使い方
let sample = '私はフルーツの中で、バナナとりんごが大好きです。';
let reg1 = /フルーツ/;
let reg2 = new RegExp('バナナ');
let reg3 = new RegExp(/ぶどう/);
console.log(reg1.test(sample));
console.log(reg2.test(sample));
console.log(reg3.test(sample));
true
true
false
sample文の中に「フルーツ」、「バナナ」、「ぶどう」が含まれているかどうか、testメソッドを使って、true/falseを返しています。
エスケープ
特殊文字を文字として扱う場合は、バックスラッシュを付けてエスケープします。
let reg = /a\.b\.c/
「.」にバックスラッシュをつけることで、普通の文字として認識することが出来るようになります。
let reg = new RegExp ('\\d');
RegExpを使用する時は、通常バックスラッシュは不要ですが、バックスラッシュを記述する場合は、2つのバックスラッシュが必要となります。
フラグ
let reg = /…/フラグ ;
let reg = new RegExp(…, ‘フラグ’);
上で少し説明したように、検索オプションとして「フラグ」を指定することが出来ます。
JavaScriptで使用出来るフラグは6種類あります。
| フラグ | 名前 | 意味 |
|---|---|---|
| i | IgnoreCase | 大文字、小文字の区別なく検索します。 |
| g | Global | すべて一致を検索します。 |
| m | Multiline | 複数行を検索します。 |
| s | Dotall | 「.」(ドット)を改行文字と一致するようにします。 |
| u | Unicode | Unicodeポイントとして扱います。 |
| y | Sticky | lastIndexプロパティで示された位置からの 一致を検索します。 |
メソッド
正規表現を使用するメソッドは以下になります。
| メソッド | 意味 | |
|---|---|---|
| RegExp | exec() | 文字列内でマッチするものを検索します。 |
| test() | 文字列内でマッチするかどうか、 true 、false で返します。 | |
| str | match() | キャプチャーグループを含む すべての一致した文字列を返します。 |
| matchAll() | キャプチャーグループを含む すべての一致した文字列を イテレータで返します。 | |
| search() | 一致したインデックスを返します。 | |
| replace() | 一致した文字列を新しい文字列に置換します。 | |
| replaceAll() | 一致したすべての文字列を 新しい文字列に置換します。 | |
| split() | 指定した区切り文字で分割します。 |
詳しいメソッドの使い方については、以下の記事でご紹介させて頂いております。
メタ文字
メタ文字とは正規表現の中で使用する文字や記号のことを言います。
| メタ文字 | 意味 |
|---|---|
| ^(キャレット) | 文字列の先頭 |
| $(ドル・ダラー) | 文字列の最後 |
| .(ドット) | 任意の一文字 |
| | | |で区切られたいずれかと一致 |
| [] | []内のいずれかの文字 [a-z] [0-9] [^a](a以外) 201[0-9] |
| * | 0回以上連続する ab*c(bが0回以上) |
| + | 1回以上連続する ab+c(bが1回以上) |
| ? | 0回、または1回 ab?c(bが0回か1回) |
| {num} | 指定回数の繰り返し ab{2}c abbcと一致 |
| {num,} | 指定回数以上 ab{2,}c abbbcと一致 |
| {min, max} | 何回以上何回以下 ab{2,4}c abbc abbbc abbbbcと一致 |
| () | グループ化 (ばなな|バナナ) a(bcd)+e abcde abcdncdeと一致 |
メタ文字と文字クラスの詳しい使い方は、こちらの記事でご紹介させて頂いております。
文字クラス
バックスラッシュと特定の文字でマッチするパターンを検索します。
| 文字クラス | 意味 |
|---|---|
| \d | 数字 [0-9] |
| \D | 数字以外 [^\d] |
| \w | 英数字、アンダーバー [0-9a-zA-Z_] |
| \W | \w以外 [^\w] |
| \s | スペース・タブ・空白 |
| \S | \s以外 [^\s] |
あとがき
正規表現の基本となる部分をとても簡潔にご紹介させて頂きました。
実際の使い方は、メソッドの使い方を学習しながら覚えていくのが良いと思います。
今回も最後までお読み頂きありがとうございました。




