W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
詞邊界 ?\b
? 是一種檢查,就像 ?^
? 和 ?$
? 一樣。
當正則表達式引擎(實現(xiàn)正則表達式搜索的程序模塊)遇到 \b
時,它會檢查字符串中的位置是否是詞邊界。
有三種不同的位置可作為詞邊界:
\w
?。\w
?,另一個不是。\w
?。例如,可以在 Hello, Java!
中找到 \bJava\b
的匹配項,其中 Java
是一個獨立的單詞,而在 Hello, JavaScript!
中則不行。
alert( "Hello, Java!".match(/\bJava\b/) ); // Java
alert( "Hello, JavaScript!".match(/\bJava\b/) ); // null
在字符串 Hello, Java!
中,以下位置對應于 \b
:
因此,它與模式 \bHello\b
相匹配,因為:
\b
?。Hello
?。\b
? 再次匹配,因為我們在 ?o
? 和逗號之間。所以模式 \bHello\b
會匹配,但 \bHell\b
不會匹配(因為在 l
之后沒有單詞邊界),Java!\b
也不會匹配(因為感嘆號不是單詞字符 \w
,所以其后沒有詞邊界)。
alert( "Hello, Java!".match(/\bHello\b/) ); // Hello
alert( "Hello, Java!".match(/\bJava\b/) ); // Java
alert( "Hello, Java!".match(/\bHell\b/) ); // null(無匹配項)
alert( "Hello, Java!".match(/\bJava!\b/) ); // null(無匹配項)
\b
既可以用于單詞,也可以用于數(shù)字。
例如,模式 \b\d\d\b
查找獨立的兩位數(shù)。換句話說,它查找的是兩位數(shù),其周圍是與 \w
不同的字符,例如空格或標點符號(或文本開頭/結尾)。
alert( "1 23 456 78".match(/\b\d\d\b/g) ); // 23,78
alert( "12,34,56".match(/\b\d\d\b/g) ); // 12,34,56
詞邊界 ?
\b
? 不適用于非拉丁字母詞邊界測試
\b
檢查該位置的一側是否匹配\w
,而另一側則不匹配 “\w
”。
但是,
\w
表示拉丁字母a-z
(或數(shù)字或下劃線),所以此檢查不適用于其他字符,如西里爾字母(cyrillic letters)或象形文字(hieroglyphs)。
時間的格式是:小時:分鐘
。小時和分鐘都是兩位數(shù),例如 09:00
。
編寫正則表達式在字符串 Breakfast at 09:00 in the room 123:456.
中查找時間。
P.S. 在這個任務里沒有必要校驗時間的正確性,所以 25:99
也可算做有效的結果。
P.P.S. 正則表達式不應該匹配 123:456
。
答案是:\b\d\d:\d\d\b
。
alert( "Breakfast at 09:00 in the room 123:456.".match( /\b\d\d:\d\d\b/ ) ); // 09:00
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: