W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
插入符號(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è)試。
這兩個(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è)試所表示的條件(文本開頭/文本末尾)。
什么字符串可以匹配模式 ^$
?
空字符串是唯一的匹配項(xiàng):它開始并立即結(jié)束。
這個(gè)題目再次證明了錨點(diǎn)不是字符串,而是測(cè)試。
對(duì)于空字符串 ""
,正則表達(dá)式引擎將會(huì)首先匹配 ^
(輸入開始),匹配成功,然后立即匹配結(jié)束 $
,也匹配成功。所空字符串是匹配項(xiàng)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: