カテゴリ: JavaScript 更新日: 2026/01/19

JavaScriptの正規表現のよくあるエラーとその対処法

JavaScriptの正規表現のよくあるエラーとその対処法
JavaScriptの正規表現のよくあるエラーとその対処法

先生と生徒の会話形式で理解しよう

生徒

「JavaScriptで正規表現を使ったらエラーが出ることがあります。どうしてですか?」

先生

「正規表現には独特の記号や構文があります。小さな間違いでもエラーになりやすいんです。今日はよくあるエラーとその対処法を紹介します。」

生徒

「具体的にはどんなエラーがありますか?」

先生

「代表的なものを順番に見ていきましょう。」

1. スラッシュの使い方を間違えるエラー

1. スラッシュの使い方を間違えるエラー
1. スラッシュの使い方を間違えるエラー

JavaScriptの正規表現は、スラッシュ / で囲む必要があります。これを忘れると構文エラーになります。


// エラーになる例
const regex = "abc/"; // SyntaxError

// 正しい書き方
const regex2 = /abc/;
console.log(regex2.test("abcdef")); // true

文字列として書く場合は、RegExpコンストラクタを使うとスラッシュなしで書けます。

2. エスケープ文字の間違い

2. エスケープ文字の間違い
2. エスケープ文字の間違い

正規表現で特別な意味を持つ記号(.*+など)は、文字として使うときにバックスラッシュ \ でエスケープする必要があります。


// 間違い例
const regex = /a.b/; // 任意の1文字が入る意味になる

// 正しい例(ドットを文字として扱う)
const regex2 = /a\.b/;
console.log(regex2.test("a.b")); // true
console.log(regex2.test("acb")); // false

特殊文字をそのまま使うと予期しないマッチになるので注意が必要です。

3. グループ化の括弧の対応ミス

3. グループ化の括弧の対応ミス
3. グループ化の括弧の対応ミス

括弧 () で文字列をグループ化するときに閉じ括弧が足りないとエラーになります。


// 間違い例
const regex = /(abc/; // SyntaxError

// 正しい例
const regex2 = /(abc)/;
console.log(regex2.test("abc")); // true

開く括弧と閉じる括弧の数を確認する習慣をつけましょう。

4. 不正な文字クラス

4. 不正な文字クラス
4. 不正な文字クラス

文字クラス [] の中で範囲を間違えるとエラーになります。


// 間違い例
const regex = /[z-a]/; // 意味不明

// 正しい例
const regex2 = /[a-z]/;
console.log(regex2.test("m")); // true

文字クラスの範囲は昇順で指定する必要があります。

5. フラグの誤用

5. フラグの誤用
5. フラグの誤用

正規表現の後に付けるフラグ gim などを間違えると無効になります。


// 間違い例
const regex = /abc/x; // SyntaxError: 無効なフラグ

// 正しい例
const regex2 = /abc/i;
console.log(regex2.test("ABC")); // true

使用できるフラグは g(全体検索)、i(大文字小文字区別なし)、m(複数行検索)などです。

6. 文字列から動的に正規表現を作る場合の注意

6. 文字列から動的に正規表現を作る場合の注意
6. 文字列から動的に正規表現を作る場合の注意

ユーザー入力などから正規表現を作るときは、特殊文字をエスケープしないと意図しない動作やエラーになります。


function escapeRegExp(str) {
  return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}

const userInput = "a+b";
const regex = new RegExp(escapeRegExp(userInput));
console.log(regex.test("a+b")); // true

これでユーザー入力を安全に正規表現に変換できます。

7. エラー回避の基本ポイント

7. エラー回避の基本ポイント
7. エラー回避の基本ポイント
  • スラッシュや括弧、角括弧の対応を必ず確認する
  • 特殊文字はエスケープする
  • フラグの種類と意味を理解して使う
  • 動的に作る場合はユーザー入力を安全にエスケープする
  • テスト環境で小さな例を作って確認しながら進める

正規表現は便利ですが、些細なミスでエラーが出ることが多いです。焦らず確認しながら書くことが重要です。

カテゴリの一覧へ
新着記事
New1
TypeScript
TypeScriptでパスエイリアスを設定する方法!tsconfig pathsでコードをスッキリ整理
New2
JavaScript
JavaScriptの正規表現のよくあるエラーとその対処法
New3
TypeScript
TypeScriptのモジュールと名前空間を完全ガイド!ファイル分割と再利用の設計
New4
JavaScript
JavaScriptの正規表現を使ったバリデーション例まとめ
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptの正規表現で繰り返し指定(* + ? {n,m})を学ぼう
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
No.4
Java&Spring記事人気No4
TypeScript
TypeScriptモジュールと名前空間を完全解説!分割して管理する基本構文
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptの正規表現で否定のパターンを表す方法を学ぼう
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptで日時の差分を計算する方法|ミリ秒・日数の応用テクニック
No.7
Java&Spring記事人気No7
TypeScript
TypeScriptモジュール入門!ESModulesとCommonJSの違いを初心者向けに徹底解説
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptの正規表現で文字列を置換する方法(replaceメソッド)