在正規表示法中,插入符號 ^ 和美元符號 $ 字元具有特殊意義。它們稱為「錨點」。
插入符號 ^ 符合文字開頭,而美元符號 $ 則符合文字結尾。
例如,我們來測試文字是否以 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 格式的時間。也就是:兩個數字,然後是一個冒號,然後是另外兩個數字。
在正規表示式語言中,這是 \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 的符合必須從文字開頭 ^ 之後立即開始,而結尾 $ 必須立即跟隨。
整個字串必須完全符合此格式。如果有任何偏差或額外字元,結果為 false。
如果存在旗標 m,錨點的行為會有所不同。我們將在下一篇文章中看到。
錨點具有「零寬度」
錨點 ^ 和 $ 是測試。它們具有零寬度。
換句話說,它們不符合字元,而是強制 regexp 引擎檢查條件(文字開頭/結尾)。
留言
<code>標籤;若要插入多行程式碼,請將其包覆在<pre>標籤中;若要插入超過 10 行的程式碼,請使用沙盒 (plnkr、jsbin、codepen…)