Javascript 錨點(diǎn):字符串開始 ^ 和末尾 $

2023-02-17 11:00 更新

插入符號 ?^? 和美元符號 ?$? 在正則表達(dá)式中具有特殊的含義。它們被稱為“錨點(diǎn)”。

插入符號 ^ 匹配文本開頭,而美元符號 $ 則匹配文本末尾。

舉個例子,讓我們測試一下文本是否以 Mary 開頭:

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

該模式 ^Mary 表示:字符串開始,緊接著就是 “Mary”。

與此類似,我們可以用 snow$ 來測試文本是否以 snow 結(jié)尾:

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

在以上這些特殊的例子中我們實際上可以用 startsWith/endsWith 來代替。正則表達(dá)式應(yīng)該被用于更加復(fù)雜的測試。

測試完全匹配

這兩個錨點(diǎn) ^...$ 放在一起通常被用于測試一個字符串是否完全匹配一個模式。例如,檢查用戶輸入的格式是否正確。

讓我們測試一個字符串是否是 12:34 格式的時間。即,兩位數(shù),然后是一個冒號,接著是另一個兩位數(shù)。

用正則表達(dá)式來表示就是 \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 所對應(yīng)的匹配項必須正好在文本 ^ 的開頭之后開始,并且結(jié)尾 $ 必須緊跟其后。

整個字符串必須完全符合這個格式。如果其中有任何偏差或額外的字符,結(jié)果將為 false

如果有修飾符 m,那么錨點(diǎn)的行為將會不同。我們將在下一篇文章中學(xué)習(xí)這一點(diǎn)。

錨點(diǎn)“寬度”為零

錨點(diǎn) ^ 和 $ 屬于測試。它們的寬度為零。

換句話說,它們并不匹配一個具體的字符,而是讓正則引擎測試所表示的條件(文本開頭/文本末尾)。

任務(wù)


正則表達(dá)式 ^$

什么字符串可以匹配模式 ^$?


解決方案

空字符串是唯一的匹配項:它開始并立即結(jié)束。

這個題目再次證明了錨點(diǎn)不是字符串,而是測試。

對于空字符串 "",正則表達(dá)式引擎將會首先匹配 ^(輸入開始),匹配成功,然后立即匹配結(jié)束 $,也匹配成功。所空字符串是匹配項。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號