カテゴリ: 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
JavaScript
JavaScriptでHello Worldを表示するには?最初の1行を実行してみよう
New2
TypeScript
TypeScriptの型ガードの使い方をやさしく解説!typeof・in・instanceofで安全に型チェック
New3
TypeScript
TypeScriptでPromiseを中断!AbortControllerで非同期処理をキャンセルする方法
New4
TypeScript
TypeScriptで関数を定義する基本構文と書き方
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのクロージャーとは?仕組みと実践例をやさしく解説
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
No.4
Java&Spring記事人気No4
TypeScript
TypeScriptのファイル分割とimport/exportの基本を徹底解説!初心者でも安心のやさしい入門
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptのライブラリとは?標準ライブラリと外部ライブラリの違いと使い方
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptで親要素・子要素・兄弟要素を取得する方法を初心者向けに徹底解説
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptのonclick・onchangeなどの基本イベントを理解しよう
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptでスクロール位置を取得・操作する方法を完全解説!scrollTopなどDOM操作入門