JavaScriptの正規表現で任意の1文字(.)や文字クラスを使う方法
生徒
「JavaScriptの正規表現で、任意の文字や特定の文字だけをマッチさせる方法ってありますか?」
先生
「はい、正規表現には . と呼ばれる任意の1文字にマッチする記号や、文字クラスと呼ばれる [] の中に文字を指定する方法があります。」
生徒
「それぞれどんなときに使うんですか?」
先生
「順番に例を見ながら説明します。初心者でもわかるように簡単に使い方を紹介しますね。」
1. .(ドット)で任意の1文字にマッチさせる
正規表現の . は、改行を除く任意の1文字にマッチします。たとえば、文字列の中で「aの次にどんな文字でも続く場合」を見つけたいときに使います。
const text = "cat, car, cab";
const result = text.match(/ca./g);
console.log(result); // ["cat", "car", "cab"]
この例では、caの後にどんな文字でも1文字続く場合にマッチします。cat、car、cabのすべてに一致します。
2. 文字クラス [] で特定の文字にマッチさせる
文字クラスは [] 内に指定した文字のどれか1文字にマッチします。たとえば、a、b、c のいずれかにマッチさせたい場合です。
const text = "cat, bat, rat, mat";
const result = text.match(/[bcr]at/g);
console.log(result); // ["cat", "bat", "rat"]
ここでは、b、c、r のいずれかの文字で始まる単語にマッチします。mat は m で始まるのでマッチしません。
3. 文字クラスの範囲指定
文字クラスでは範囲を指定することもできます。例えば、aからfまでの文字にマッチさせる場合は [a-f] と書きます。
const text = "apple, banana, cherry, date";
const result = text.match(/[a-d]ate/g);
console.log(result); // ["date"]
この例では、先頭の文字が a〜d の範囲にある「date」にだけマッチします。
4. 否定の文字クラス
文字クラスの先頭に ^ を入れると、その文字以外にマッチさせることができます。例えば a 以外の文字にマッチさせる場合です。
const text = "apple, banana, cherry";
const result = text.match(/[^a]pple/g);
console.log(result); // []
この場合、最初の文字が a ではない場合にマッチします。apple は a で始まるのでマッチしません。
5. 活用ポイント
.は改行を除く任意の1文字にマッチ。[]の中に文字を並べると、そのいずれかの文字にマッチ。- 文字クラスで範囲指定や否定指定を使うと、より柔軟に文字を検索可能。
- 文字列検索や入力チェック、特定のパターン検出に便利です。
6. 注意点
正規表現の . は改行にはマッチしません。複数行の文章で任意の文字をマッチさせたい場合は [\s\S] のように書く必要があります。また、文字クラスでは特定の文字だけを正確に指定することで、意図しない文字にマッチしないよう注意しましょう。