JavaScriptの正規表現で否定のパターンを表す方法を学ぼう
先生と生徒の会話形式で理解しよう
生徒
「正規表現で特定の文字だけを除外したい場合はどうすればいいですか?」
先生
「その場合は否定文字クラスを使います。文字クラスの中で ^ を使うと、『この文字以外』という意味になります。」
生徒
「例えばどのように書くんですか?」
先生
「例えば [^abc] と書くと、a、b、c 以外の文字にマッチします。」
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. 否定文字クラスの応用例
数字以外の文字にマッチさせたい場合も否定文字クラスが使えます:
const text = "ID12345";
const result = text.match(/[^0-9]/g);
console.log(result); // ["I", "D"]
ここでは [^0-9] が数字以外の文字を抽出しています。
3. 特殊文字との組み合わせ
否定文字クラスは他の正規表現と組み合わせることで便利に使えます。例えば空白文字以外をすべて取り出す場合:
const text = "Hello World!";
const result = text.match(/[^\s]+/g);
console.log(result); // ["Hello", "World!"]
\\s は空白文字を表し、[^\s] で空白以外の文字にマッチさせています。
4. 否定文字クラスのポイント
- 角括弧
[ ]内で^を先頭に置くと否定になる - 数字、アルファベット、空白などを除外したいときに便利
- 他の正規表現と組み合わせて複雑なマッチ条件も作れる
否定パターンを使うことで、特定の文字を除外した検索や抽出が簡単にできるようになります。初心者の方はまず小さな文字列で練習してみると理解が進みます。