2022年4月13日

アンカー: 文字列の先頭 ^ と末尾 $

キャレット記号 ^ とドル記号 $ は、正規表現で特別な意味を持ちます。これらは「アンカー」と呼ばれます。

キャレット ^ はテキストの先頭に、ドル $ は末尾に一致します。

たとえば、テキストが Mary で始まるかどうかをテストしてみましょう。

let str1 = "Mary had a little lamb";
alert( /^Mary/.test(str1) ); // true

パターン ^Mary は、「文字列の先頭、そして Mary」を意味します。

同様に、snow$ を使用して、文字列が snow で終わるかどうかをテストできます。

let str1 = "its fleece was white as snow";
alert( /snow$/.test(str1) ); // true

これらの特定のケースでは、代わりに文字列メソッド startsWith/endsWith を使用できます。正規表現は、より複雑なテストに使用してください。

完全一致のテスト

両方のアンカーを組み合わせた ^...$ は、文字列がパターンに完全に一致するかどうかをテストするためによく使用されます。たとえば、ユーザー入力が正しい形式であるかどうかを確認する場合などです。

文字列が 12:34 形式の時間であるかどうかを確認してみましょう。つまり、2桁の数字、コロン、そしてさらに2桁の数字です。

正規表現言語では、これは \d\d:\d\d です。

let goodInput = "12:34";
let badInput = "12:345";

let regexp = /^\d\d:\d\d$/;
alert( regexp.test(goodInput) ); // true
alert( regexp.test(badInput) ); // false

ここで、\d\d:\d\d の一致は、テキストの先頭 ^ の直後から始まり、末尾 $ が直後に続かなければなりません。

文字列全体がこの形式と完全に一致する必要があります。 Abweichungen や余分な文字があると、結果は false になります.

フラグ m が存在する場合、アンカーの動作は異なります。これについては次の記事で説明します。

アンカーは「幅ゼロ」です

アンカー ^$ はテストです。これらは幅ゼロです。

つまり、これらは文字に一致するのではなく、正規表現エンジンに条件(テキストの先頭/末尾)をチェックさせるものです。

タスク

どの文字列がパターン ^$ に一致しますか?

空の文字列だけが一致します。これは開始と同時に終了します。

このタスクは、アンカーが文字ではなくテストであることを再び示しています。

文字列は空です ""。エンジンは最初に ^ (入力開始) に一致させます。これは存在します。そしてすぐに末尾 $ に一致させます。これも存在します。そのため、一致があります。

チュートリアルマップ

コメント

コメントする前にこれを読んでください…
  • 改善のための提案がある場合は、コメントする代わりに、GitHub の issue またはプルリクエストを送信してください。
  • 記事の内容が理解できない場合は、詳しく説明してください。
  • 短いコードを挿入するには <code> タグを使用し、複数行の場合は <pre> タグで囲み、10行を超える場合はサンドボックス(plnkrjsbincodepen…)を使用してください。