W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
多行模式由修飾符 ?m
? 啟用。
它只影響 ^
和 $
的行為。
在多行模式下,它們不僅僅匹配文本的開始與末尾,還匹配每一行的開始與末尾。
在這個有多行文本的例子中,模式 /^\d/gm
將從每行的開頭取一個數(shù)字:
let str = `1st place: Winnie
2nd place: Piglet
3rd place: Eeyore`;
console.log( str.match(/^\d/gm) ); // 1, 2, 3
沒有修飾符 m
時,僅會匹配第一個數(shù)字:
let str = `1st place: Winnie
2nd place: Piglet
3rd place: Eeyore`;
console.log( str.match(/^\d/g) ); // 1
這是因為默認(rèn)情況下,錨點 ^
僅匹配文本的開頭,在多行模式下,它匹配行的開頭。
請注意:
“行的開頭”表示“就在換行符之后”:多行模式下的測試
^
匹配所有以換行符\n
開頭的位置。
以及在文本開始的位置。
美元符 $
的行為也類似。
正則表達(dá)式 \d$
尋找每行的最后一個數(shù)字
let str = `Winnie: 1
Piglet: 2
Eeyore: 3`;
console.log( str.match(/\d$/gm) ); // 1,2,3
沒有修飾符 m
,那么美元符 $
將只會匹配整個文本的末尾,所以只有最后一個數(shù)字會被匹配。
請注意:
“行的末尾”表示“就在換行符之前”:多行模式下的測試
$
匹配所有以換行符\n
結(jié)尾的位置。
以及在文本末尾的位置。
要尋找新的一行,我們不僅可以使用錨點 ^
和 $
,也可以使用換行符 \n
。
區(qū)別是什么?讓我們看個例子。
在這里我們使用 \d\n
進行搜索,而不是使用 \d$
:
let str = `Winnie: 1
Piglet: 2
Eeyore: 3`;
console.log( str.match(/\d\n/g) ); // 1\n,2\n
正如我們所看到的,這里找到了 2 個匹配項而不是 3 個。
這是因為在 3
之后沒有換行符(但是有文本末尾,所以它匹配 $
)。
另一個區(qū)別是,現(xiàn)在每個匹配項都包含一個換行符 \n
。與錨點 ^
$
不同,錨點只測試條件(行的開始/末尾),而 \n
是一個字符,因此它成為了結(jié)果的一部分。
因此,當(dāng)我們需要結(jié)果中有換行符時,使用 \n
。而錨點則用于在行的開頭/末尾查找某些內(nèi)容。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: