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 格式的時間。也就是:兩個數字,然後是一個冒號,然後是另外兩個數字。

在正規表示式語言中,這是 \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 引擎檢查條件(文字開頭/結尾)。

任務

哪個字串符合模式 ^$

空字串是唯一符合的:它開始並立即結束。

這個任務再次證明錨點不是字元,而是測試。

字串為空 ""。引擎首先符合 ^(輸入開頭),是的,它在那裡,然後立即結束 $,它也在這裡。因此,有符合。

教學課程地圖

留言

留言前請先閱讀…
  • 如果您有改善建議,請 提交 GitHub 問題 或發起拉取請求,而非留言。
  • 如果您無法理解文章中的某個部分,請詳細說明。
  • 若要插入少數幾個字元的程式碼,請使用 <code> 標籤;若要插入多行程式碼,請將其包覆在 <pre> 標籤中;若要插入超過 10 行的程式碼,請使用沙盒 (plnkrjsbincodepen…)