カテゴリ: JavaScript 更新日: 2026/07/21

JavaScriptの正規表現で否定のパターンを表す方法を学ぼう

JavaScriptの正規表現で否定のパターンを表す方法(\[^…]など)
JavaScriptの正規表現で否定のパターンを表す方法(\[^…]など)

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

生徒

「正規表現で特定の文字だけを除外したい場合はどうすればいいですか?」

先生

「その場合は否定文字クラスを使います。文字クラスの中で ^ を使うと、『この文字以外』という意味になります。」

生徒

「例えばどのように書くんですか?」

先生

「例えば [^abc] と書くと、a、b、c 以外の文字にマッチします。」

1. 否定文字クラスとは?

1. 否定文字クラスとは?
1. 否定文字クラスとは?

正規表現では、角括弧 [ ] を使って文字の集合を表します。例えば [abc] は a、b、c のいずれかにマッチします。ここに ^ を先頭に置くと、「これ以外」という否定になります。


const text = "apple banana cherry";
const result = text.match(/[^abc]/g);
console.log(result); 
// ["p", "p", "l", "e", " ", "n", "n", " ", "h", "e", "r", "r", "y"]

上記では a、b、c を除くすべての文字がマッチしています。

2. 否定文字クラスの応用例

2. 否定文字クラスの応用例
2. 否定文字クラスの応用例

数字以外の文字にマッチさせたい場合も否定文字クラスが使えます:


const text = "ID12345";
const result = text.match(/[^0-9]/g);
console.log(result); // ["I", "D"]

ここでは [^0-9] が数字以外の文字を抽出しています。

3. 特殊文字との組み合わせ

3. 特殊文字との組み合わせ
3. 特殊文字との組み合わせ

否定文字クラスは他の正規表現と組み合わせることで便利に使えます。例えば空白文字以外をすべて取り出す場合:


const text = "Hello World!";
const result = text.match(/[^\s]+/g);
console.log(result); // ["Hello", "World!"]

\\s は空白文字を表し、[^\s] で空白以外の文字にマッチさせています。

4. 否定文字クラスのポイント

4. 否定文字クラスのポイント
4. 否定文字クラスのポイント
  • 角括弧 [ ] 内で ^ を先頭に置くと否定になる
  • 数字、アルファベット、空白などを除外したいときに便利
  • 他の正規表現と組み合わせて複雑なマッチ条件も作れる

否定パターンを使うことで、特定の文字を除外した検索や抽出が簡単にできるようになります。初心者の方はまず小さな文字列で練習してみると理解が進みます。

5. 否定パターンで特定の単語を除外する

5. 否定パターンで特定の単語を除外する
5. 否定パターンで特定の単語を除外する

否定文字クラスは文字単位での除外に使われますが、単語単位で除外したい場合は少し工夫が必要です。例えば特定の単語を含まない文字列を扱う場合、否定先読みと組み合わせることで対応できます。


const text = "apple orange banana";
const result = text.match(/(?!banana)\b\w+\b/g);
console.log(result); // ["apple", "orange"]

このように、単語レベルで条件を制御することで、より柔軟な検索が可能になります。

6. 否定先読みとの違いを理解する

6. 否定先読みとの違いを理解する
6. 否定先読みとの違いを理解する

否定文字クラスと似た概念に否定先読みがあります。否定先読みは特定のパターンに続かない場合のみマッチさせる方法です。文字単位ではなく条件全体を制御できる点が特徴です。


const text = "cat dog cow";
const result = text.match(/c(?!at)\w+/g);
console.log(result); // ["cow"]

この例では「cat」は除外され、「cow」のみが対象になります。用途に応じて使い分けることが重要です。

7. 否定パターンを使った入力チェック

7. 否定パターンを使った入力チェック
7. 否定パターンを使った入力チェック

否定パターンは入力チェックにもよく使われます。例えば英数字以外を除外したい場合などです。ユーザー入力の検証処理で活用できます。


const input = "abc123!@#";
const result = input.replace(/[^a-zA-Z0-9]/g, "");
console.log(result); // "abc123"

このように不要な文字を取り除くことで、安全で整ったデータを扱うことができます。フォーム入力やバリデーション処理で非常に役立つテクニックです。

カテゴリの一覧へ
新着記事
New1
JavaScript
PostgreSQLでインデックスが使われない理由を徹底解説!初心者でもわかるデータベース高速化
New2
JavaScript
JavaScriptの条件式で型の違いに注意しよう!厳密比較と抽象比較
New3
JavaScript
JavaScriptの条件式におけるnull・undefined判定のコツ!初心者でもわかる判定方法ガイド
New4
Claude Code
Claude Codeのスペック駆動開発とは?初心者向けに流れを解説
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
TypeScript
TypeScript学習におすすめの無料教材・リファレンスサイト【初心者向け】
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptのライブラリとは?標準ライブラリと外部ライブラリの違いと使い方
No.4
Java&Spring記事人気No4
TypeScript
TypeScriptで最初に覚えたい基本構文まとめ
No.5
Java&Spring記事人気No5
TypeScript
TypeScriptの始め方:開発環境の構築手順【初心者向け】
No.6
Java&Spring記事人気No6
TypeScript
TypeScriptでAPIレスポンスをバリデーションする手法!安全な型チェックとZodによるデータ検証の基本
No.7
Java&Spring記事人気No7
Claude Code
macOSにClaude Codeをインストールする方法と必要な準備
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptでエラーを発生させる方法を完全解説!初心者でもわかるthrow文の基本