本文へスキップ
BecomeCoder

正規表現コース · 第4章 位置とまとまり · レッスン10

アンカー ― ^ と $ で行頭・行末を指定する

ブラウザで完結

導入

^ は「行の先頭」、$ は「行の末尾」を表します。これらは文字ではなく 位置 にマッチする特別な記号で、アンカー(錨)と呼ばれます。「行の先頭が数字で始まる」「末尾が .txt で終わる」といった条件を書けます。

説明

アンカーは幅を持たない「位置」を指す点がポイントです。

パターン: ^Error      対象: Error: 失敗      → 行頭の "Error" にマッチ
パターン: ^Error      対象: 致命的Error      → マッチしない(行頭でないため)
パターン: 円$         対象: 1000円           → 行末の "円" にマッチ

^$ の両方で挟むと「文字列全体がぴったりこの形か」を検査できます。入力チェック(バリデーション)の定番です。

パターン: ^\d{3}-\d{4}$   対象: 100-0001      → マッチ(全体が郵便番号の形)
パターン: ^\d{3}-\d{4}$   対象: 〒100-0001    → マッチしない(先頭に余計な文字)

^\d{3}-\d{4}$ は「先頭から末尾まで、まるごと郵便番号の形でなければならない」という意味になります。アンカーを付けないと「文字列のどこかに含まれていればOK」になるので、全体一致を求めるときは ^ ... $ で挟む のが鉄則です。

複数行モードでの ^ $ ^ $ は通常「文字列全体の先頭・末尾」を指しますが、「複数行モード」を有効にすると「各行の先頭・末尾」に変わります。モードの指定は第5章で扱います。

やってみよう

^(先頭)と $(末尾)は「位置」を表す、と覚えましょう。入力チェックでは ^パターン$ と挟んで「全体がこの形か」を調べるのが定石です。

実際に動かしてみよう

パターン欄に正規表現を、下の「テスト文字列」欄に対象の文字列を入れると、マッチした部分がその場でハイライトされます(ブラウザ標準の正規表現エンジンで動きます)。フラグ(g/i/m/s)を切り替えたり、本文のパターンを書き換えたりして、マッチの変化を確かめながら進めましょう。

正規表現 — その場でマッチを確認

ブラウザ標準の正規表現エンジンでパターンを試せる学習用ウィジェットを読み込みます(外部エンジン不要・軽量です)。
スクロールして表示された時点でも自動で読み込まれます。