キャレット '^'
とドル '$'
文字は正規表現で特別な意味を持っており、“アンカー” と呼ばれます。
キャレット ^
はテキストの先頭にマッチし、ドル $
は – 末尾にマッチします。
例えば、テキストが Mary
から始まっているかをテストしてみましょう:
let str1 = "Mary had a little lamb, it's fleece was white as snow";
let str2 = 'Everywhere Mary went, the lamp was sure to go';
alert( /^Mary/.test(str1) ); // true
alert( /^Mary/.test(str2) ); // false
パターン ^Mary
は、“文字列が Mary で開始する” を意味します。
次は、テキストがメールアドレスで終わっているかをテストしましょう。
メールアドレスにマッチするには、正規表現 [-.\w]+@([\w-]+\.)+[\w-]{2,20}
を使います。これは完全ではありませんが、多くの場合は問題ありません。
文字列がメールアドレスで終わっているかどうかをテストするために、$
をパターンに追加しましょう。:
let reg = /[-.\w]+@([\w-]+\.)+[\w-]{2,20}$/g;
let str1 = 'My email is mail@site.com';
let str2 = 'Everywhere Mary went, the lamp was sure to go';
alert( reg.test(str1) ); // true
alert( reg.test(str2) ); // false
文字列が正確にパターンに従っているかをチェックするのに、両方のアンカーを一緒に使うことも可能です。それはバリデーションでよく使われます。
例えば、str
が正確に色(#
と 6桁の16進数の形式)であることを確認したいとします。その色のパターンは #[0-9a-f]{6}
です。
文字列全体 が正確にマッチするかをチェックするには、^...$
を追加します。:
let str = "#abcdef";
alert( /^#[0-9a-f]{6}$/i.test(str) ); // true
正規表現のエンジンはテキストの開始を探し、次に色、その後すぐにテキストが終わるかを見ます。まさに私たちが必要なものです。
\b
のようなアンカーはテストです。それらの幅はゼロです。
つまり、それらは文字にマッチするのではなく、正規表現エンジンに条件チェック(テキストの開始/終了)を強制させるものです。
アンカーの振る舞いはフラグ m
(複数行モード) の有無で変わります。それらについては次のチャプターで見ていきましょう。
コメント
<code>
タグを使ってください。複数行の場合は<pre>
を、10行を超える場合にはサンドボックスを使ってください(plnkr, JSBin, codepen…)。