正規表現について調べてみた(初学者向け)

2025/03/03に公開

chatGPTを使って正規表現について調べてみました。

(質問)JavaScriptにおける正規表現とは何ですか?

JavaScriptにおける正規表現(Regular Expression, RegExp)とは、
文字列の検索や置換を効率的に行うためのパターンを表すオブジェクトです。
RegExp オブジェクトを使用すると、特定の文字列パターンを
簡単に検索、抽出、置換することができます。

(・_・D フムフム
・・・いまいちよく分かりません。

(質問)何のために使われるか?使うとどのようなメリットがありますか?

  1. 正規表現の主な用途
    JavaScriptの正規表現は、主に文字列の操作やデータの検証に使われます。
  2. 正規表現を使うメリット
    正規表現を使うことで、コードの可読性やメンテナンス性が向上し、パフォーマンスの最適化にもつながります。

・・・これでもよく分かりません。

(質問)
「正規表現」という言葉の意味が分からないので、説明してください。
なぜ「正規」なのでしょうか?

「正規(regular)」という言葉には、「規則性がある」「一定の法則に従っている」
という意味があります。
「正規表現」=「規則的なパターンを記述する表現方法」 という意味になります。
この「正規(regular)」の由来は、数学・計算機科学の「正規言語(Regular Language)」
という概念に基づいています。
「文字列のパターンを扱う方法」 として「正規表現(Regular Expression)」が生まれました。

(質問)つまり一定のパターンを表現することができるようになる・・・?

そうです!正規表現は「一定のパターンを表現するためのルールや記法」です。
たとえば、以下のようなパターンを表現できます。

✅ 一定のパターンを表現する例

パターン 正規表現 マッチする例
数字だけ /^\d+$/ "12345", "987654"
英字だけ /^[a-zA-Z]+$/ "hello", "JavaScript"
メールアドレス /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$/ "test@example.com"
ひらがなだけ /^[ぁ-ん]+$/ "こんにちは", "さくら"
電話番号 /^\d{3}-\d{4}-\d{4}$/ "090-1234-5678"

✅ もっと複雑なパターンも作れる
例えば、「Hello で始まり ! で終わる文章」というパターンを表現すると:

const regex = /^Hello.*!$/;
console.log(regex.test("Hello, world!")); // true
console.log(regex.test("Hi, world!")); // false

ーーー

まとめ

ここまで来てようやくどういったものか分かる気がしてきました。
個人的に「正規」表現という名前が初学者にとっては理解を妨げている気がします。
今回はここまでですが、扱えることが必須のようなのでこれから少しずつ覚えていきたいと思います。

GitHubで編集を提案

Discussion