JavaScriptの正規表現入門!初心者でもわかる基本の使い方と活用例
生徒
「先生、JavaScriptで文字のパターンを探したり、置き換えたりする方法ってありますか?」
先生
「あります。それが『正規表現』です。文字列の中から特定の文字やパターンを効率よく検索・操作できる便利な仕組みです。」
生徒
「正規表現って聞くと難しそうですが、初心者でも使えるんですか?」
先生
「もちろんです。基本を押さえれば簡単に使えます。まずはパターンの書き方や検索方法から見ていきましょう。」
1. 正規表現とは?
正規表現とは、文字列の中で「この文字やパターンを探してください」と指示する方法です。英語では Regular Expression と呼ばれ、略して RegExp とも書きます。例えば、「電話番号の形式だけを見つけたい」や「メールアドレスが正しいか確認したい」ときに使います。
JavaScriptでは、正規表現は /パターン/フラグ という形で書きます。
const pattern = /abc/;
console.log(pattern.test("abcdef")); // true
この例では「abc」という文字が含まれているかどうかをチェックしています。
2. testメソッドで文字列を検索する
正規表現には test メソッドがあり、文字列にパターンが含まれているかどうかを判定できます。結果は true か false で返ってきます。
const regex = /hello/;
console.log(regex.test("hello world")); // true
console.log(regex.test("goodbye")); // false
このように、一度覚えると簡単に文字列の中身をチェックできるようになります。
3. matchメソッドで一致部分を取得する
文字列の中で正規表現に一致した部分を取得したい場合は match メソッドを使います。
const text = "今日の天気は晴れです。明日は雨かもしれません。";
const result = text.match(/晴れ|雨/g);
console.log(result); // ["晴れ", "雨"]
この例では「晴れ」か「雨」にマッチする文字列を配列で取得しています。フラグの g は全ての一致を探す意味です。
4. replaceメソッドで文字列を置き換える
正規表現を使うと、文字列の置き換えも簡単です。replace メソッドを使いましょう。
let text = "私は猫が好きです。猫はかわいい。";
text = text.replace(/猫/g, "犬");
console.log(text); // 私は犬が好きです。犬はかわいい。
「猫」を「犬」にすべて置き換えることができました。こちらも g フラグで全て置き換えが可能です。
5. フラグの意味を理解しよう
正規表現にはいくつかフラグがあります。代表的なものは次の通りです。
g- グローバル検索(すべての一致を検索)i- 大文字小文字を区別せず検索m- 複数行モードで検索
const regex = /javascript/i;
console.log(regex.test("I love JavaScript")); // true
大文字と小文字を区別せずに「javascript」を検索しています。
6. 文字クラスを使って便利に検索
正規表現では特定の文字の集合を [] で指定できます。これを文字クラスと呼びます。
const regex = /[aiueo]/g;
const text = "こんにちは、世界!";
console.log(text.match(regex)); // ["お","い","あ","う"]
母音だけを抽出することもできます。文字クラスは検索の幅を広げる便利な機能です。
7. 簡単な応用例:数字だけを抽出する
数字だけを取り出すときは \d を使います。これは数字を意味する特殊文字です。
const str = "電話番号は090-1234-5678です。";
const numbers = str.match(/\d+/g);
console.log(numbers); // ["090", "1234", "5678"]
このように簡単に文字列から数字を抽出することができます。
8. 正規表現で覚えておくべき特殊文字
正規表現には覚えておきたい特殊文字があります。
.- 任意の1文字*- 直前の文字の0回以上の繰り返し+- 直前の文字の1回以上の繰り返し?- 直前の文字の0回または1回^- 行の先頭$- 行の末尾
const str = "abc abc abc";
const result = str.replace(/abc/g, "123");
console.log(result); // 123 123 123
基本を押さえるだけでも多くの文字列操作に役立ちます。
9. 練習して覚えるのが近道
正規表現は最初は難しく感じますが、簡単な検索や置き換えの例から練習するとすぐに慣れます。まずは test、match、replace の3つをマスターすることが大切です。
const email = "test@example.com";
const isValid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
console.log(isValid); // true
このようにメールアドレスの簡単な形式チェックも可能です。練習を重ねて、自分でパターンを作れるようになりましょう。
まとめ
ここまで、JavaScriptの正規表現について基礎から応用まで解説してきました。正規表現は文字列を検索・抽出・置換する際に非常に便利なツールで、RegExpオブジェクトとして扱います。testメソッドを使えば文字列に特定のパターンが含まれているかを簡単に判定でき、matchメソッドで一致した文字列を配列で取得することができます。さらにreplaceメソッドを使えば文字列の置換も自由自在に行えます。フラグを活用すれば、大文字小文字の区別を無くした検索や、複数行に対応した検索、すべての一致部分の抽出も可能です。また、文字クラスや特殊文字を覚えることで、より柔軟で複雑なパターンを扱えるようになります。正規表現は最初は難しく感じますが、繰り返し練習することで自然に使いこなせるようになり、メールアドレスや電話番号の形式チェック、数字だけの抽出、文字置換など実用的な処理も簡単に行えるようになります。
サンプルまとめプログラム
// 文字列チェック const text = "今日は晴れです。明日は雨かもしれません。"; const weather = text.match(/晴れ|雨/g); console.log(weather); // ["晴れ", "雨"]
// 文字置換
let pet = "私は猫が好きです。猫はかわいい。";
pet = pet.replace(/猫/g, "犬");
console.log(pet); // 私は犬が好きです。犬はかわいい。
// メールアドレス形式チェック
const email = "user@example.com";
const isValidEmail = /^[^\s@]+@[^\s@]+.[^\s@]+$/.test(email);
console.log(isValidEmail); // true
// 数字抽出
const str = "電話番号は090-1234-5678です。";
const numbers = str.match(/\d+/g);
console.log(numbers); // ["090","1234","5678"]
生徒
「先生、正規表現って最初は複雑そうに見えましたけど、こうしてまとめて見ると基本はシンプルなんですね。」
先生
「その通りです。test、match、replace の3つを押さえれば、日常の文字列処理には十分対応できます。」
生徒
「文字クラスや特殊文字も使えば、もっと細かくパターンを指定できるんですね。」
先生
「そうです。例えば数字だけを抽出したり、母音だけを取り出すといった操作も簡単になります。最初は簡単なパターンから練習して、慣れてきたら応用していくのが近道です。」
生徒
「なるほど、フラグを使うことで大文字小文字の区別を無くしたり、全ての一致を取得したりできるのも便利ですね。」
先生
「その通りです。フラグを上手に使うことで、正規表現はさらに強力になります。練習を重ねることで、自分で複雑なパターンを作れるようになります。」
生徒
「今日学んだことを日々のプログラムに活かして、文字列操作をもっと効率よくできるように頑張ります。」
先生
「それでいいです。正規表現は使いこなせると本当に便利ですし、JavaScriptでの文字列処理の幅が広がります。まずは簡単な例からコツコツ練習して、自信をつけていきましょう。」