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

2023-02-17 11:00 更新

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

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

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

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

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

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

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

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

測(cè)試完全匹配

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

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

用正則表達(dá)式來(lái)表示就是 \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

在這個(gè)例子中 \d\d:\d\d 所對(duì)應(yīng)的匹配項(xiàng)必須正好在文本 ^ 的開頭之后開始,并且結(jié)尾 $ 必須緊跟其后。

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

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

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

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

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

任務(wù)


正則表達(dá)式 ^$

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


解決方案

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

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

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


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)