JavaScript | 第9章「正規表現」

javascrpit JavaScript
スポンサーリンク

JavaScript「正規表現」要点まとめ

1. 正規表現とは

  • 文字列のパターンを表現するための仕組み。
  • 検索・置換・抽出などを柔軟に行える。
  • JavaScript では RegExp オブジェクトとして扱う。

2. 作り方(2通り)

方法記法用途
リテラル/pattern/flags一定のパターンを使うとき
コンストラクタnew RegExp("pattern", "flags")動的にパターンを作るとき

例:

const re1 = /abc/;
const re2 = new RegExp("abc");
JavaScript

3. 主なフラグ(オプション)

フラグ意味
g全体検索(複数ヒット)
i大文字・小文字を無視
m複数行モード
s改行も含めて「.」にマッチ
uUnicode モード
y現在位置からのみマッチ(sticky)

4. 基本の構文(パターンの書き方)

記号意味
.任意の1文字/a.c/ → “abc”, “axc”
\d数字(0–9)/\d\d/ → 2桁の数字
\w英数字+_/\w+/ → 単語にマッチ
\s空白文字/\s+/ → 空白部分
^ / $文字列の先頭/末尾/^abc$/ → “abc”全体一致
[abc]いずれかの1文字/[aeiou]/ → 母音
[^abc]a,b,c以外の1文字/[^0-9]/ → 数字以外
( )グループ化/(ab)+/ → “ab” 繰返し
``OR(どちらか)

5. 繰り返し(量指定子)

記号意味
*0回以上/bo*/ → “b”, “bo”, “boo”
+1回以上/a+/ → “a”, “aa”
?0または1回/colou?r/ → “color” or “colour”
{n}ちょうど n 回/\d{3}/ → 3桁の数字
{n,}n回以上/a{2,}/ → 2回以上のa
{n,m}n〜m回/a{2,4}/ → 2〜4回のa

貪欲(greedy)と非貪欲(lazy)

  • *, +, {} はデフォルトで「できるだけ多く」マッチ。
  • *?, +?, {n,m}? のように ? を付けると最小限に。

6. よく使うメソッド

メソッド概要戻り値
test(str)マッチするか確認true / false
exec(str)詳細なマッチ結果を取得配列 or null
str.match(re)マッチ部分を配列で返す配列
str.search(re)最初のマッチ位置を返す数値 or -1
str.replace(re, newStr)置換新しい文字列
str.split(re)正規表現で分割配列

例:

/abc/.test("123abc")       // true
"2025-10-13".match(/\d+/g) // ["2025", "10", "13"]
"dog".replace(/d/, "c")    // "cog"
JavaScript

7. 注意ポイント

  • エスケープが必要な記号
    . * + ? ^ $ { } ( ) [ ] | \ は「\」を付けて文字として扱う。
  • g フラグ付きの test() は状態を持つ
    同じ正規表現で連続して呼ぶと、lastIndex が進む。
  • 読みやすさ重視!
    長いパターンは分割・コメント付き構文(xフラグがないのでJSでは工夫が必要)で整理。

例題(理解チェック)

// 数字だけの文字列?
/^\d+$/.test("12345")  // ✅ true
/^\d+$/.test("12a45")  // ❌ false

// メールっぽい文字列
/^[\w.-]+@[\w.-]+\.[a-z]{2,}$/i.test("test@mail.com") // ✅

// 3桁ごとにカンマを挿入
"1000000".replace(/\B(?=(\d{3})+(?!\d))/g, ",") // "1,000,000"
JavaScript

まとめ(初心者がまず押さえる3点)

  1. 「文字列をパターンで探す」道具が正規表現。
  2. メタ文字. * + ? [] () ^ $など)の意味を覚える。
  3. test()replace() から始めると理解しやすい。
タイトルとURLをコピーしました