#22 JavaScriptで学ぶ正規表現の基本

はじめに

「メールアドレスの形式が正しいかチェックしたい」「文章の中から電話番号だけを抜き出したい」——こういった作業を一気に片付けてくれるのが正規表現(せいきひょうげん)です。正規表現とは、文字列の「パターン」を専用の記号で表現し、そのパターンに一致する部分を検索・抽出・置換するための仕組みのことです。最初は記号の羅列で身構えますが、基本の型さえ覚えれば強力な武器になります。この記事では、JavaScriptにおける正規表現の書き方と、よく使うメソッドの使い方を初心者向けに解説します。

正規表現オブジェクトの作り方

JavaScriptで正規表現を使うには、大きく分けて2つの書き方があります。

// 1. リテラル記法(スラッシュで囲む)
const re1 = /abc/;

// 2. RegExpコンストラクタを使う方法
const re2 = new RegExp("abc");

ほとんどの場合はリテラル記法で十分ですが、パターンを変数として動的に組み立てたいときはRegExpコンストラクタを使います。文字列として渡すため、バックスラッシュを二重にする点に注意してください。

基本のメソッドを使ってみる

test()で「含まれているか」を判定する

もっともシンプルなのがtest()メソッドです。パターンに一致する部分が文字列内にあるかどうかを、true/falseの真偽値で返してくれます。

const re = /\d{3}-\d{4}/; // 数字3桁-数字4桁
console.log(re.test("郵便番号は123-4567です")); // true

\dは「0〜9のいずれか1文字」を表す特殊な記号で、{3}は直前の要素を3回繰り返す、という意味です。組み合わせることで「数字が3個続く」というパターンを表現できます。

match()・matchAll()で抜き出す

一致した部分の文字列そのものが欲しいときは、文字列側のメソッドmatch()を使います。

const text = "電話は03-1234-5678、携帯は090-1111-2222です";
const result = text.match(/\d{2,4}-\d{3,4}-\d{4}/g);
console.log(result); // ["03-1234-5678", "090-1111-2222"]

gは「グローバルフラグ」と呼ばれ、一致するすべての箇所を探すオプションです。付けないと最初の1件しか返りません。一致ごとの詳細情報も取得したい場合は、より新しいmatchAll()が便利です。

replace()で置換する

パターンに一致した部分を別の文字列に置き換えるにはreplace()を使います。

const msg = "2026年09月05日";
const formatted = msg.replace(/(\d{4})年(\d{2})月(\d{2})日/, "$1/$2/$3");
console.log(formatted); // "2026/09/05"

()で囲んだ部分は「キャプチャグループ」といい、パターンの一部分だけを取り出して後から$1のように参照できます。日付の区切り文字を変換するような場面で非常に役立つテクニックです。

よく使う記号の早見表

正規表現には多くの記号がありますが、まずは次の6つを覚えるだけでも大半のパターンが書けるようになります。

  • \d … 数字1文字
  • \w … 英数字・アンダースコア1文字
  • \s … 空白文字(半角スペースやタブなど)
  • + … 直前の要素が1回以上続く
  • * … 直前の要素が0回以上続く(無くてもよい)
  • ^と$ … それぞれ文字列の先頭・末尾を表す

JavaScriptならではの注意点

他の言語(PythonやJavaなど)では正規表現を文字列として扱うのが一般的ですが、JavaScriptには/pattern/flagsという専用のリテラル記法があるのが大きな特徴です。バックスラッシュのエスケープが減り、慣れると読み書きしやすくなります。

もう一つ初心者がつまずきやすいのが、gフラグを付けた正規表現オブジェクトの挙動です。test()やexec()を繰り返し呼び出すと、次に検索を始める位置を示す内部プロパティlastIndexが更新され、2回目以降の結果が意図せず変わってしまいます。同じオブジェクトをループ内で使い回すときは、この挙動に注意してください。また、名前付きキャプチャグループ(?<name>...)を使えば番号ではなく名前で結果を参照でき、可読性が上がります。

まとめ

正規表現は記号だらけで難しく感じますが、「パターンを作る」「test/match/replaceのどれを使うか決める」という2ステップさえ押さえれば、入力チェックや文字列整形など実務でも強力な武器になります。まずは\dやgフラグといった基本の記号から使ってみて、徐々に複雑なパターンにも挑戦してみてください。

関連記事


本ページはプロモーションを含みます。

参考書籍(PR)

JavaScriptをもっと学びたい方には「改訂新版JavaScript本格入門」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動くWindows専用の自動化ツールをオーダーメイドで作成しています。気になる方はこちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本