字詞邊界 \b
是一種測試,就像 ^
和 $
。
當正規表示法引擎(執行搜尋正規表示法的程式模組)遇到 \b
時,它會檢查字串中的位置是否為字詞邊界。
有三個不同的位置符合字詞邊界的資格
- 在字串開頭,如果第一個字串字元是字詞字元
\w
。 - 在字串中的兩個字元之間,其中一個是字詞字元
\w
,另一個則不是。 - 在字串結尾,如果最後一個字串字元是字元
\w
。
例如,regexp \bJava\b
會在 Hello, Java!
中找到,其中 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 (no match)
alert( "Hello, Java!".match(/\bJava!\b/) ); // null (no match)
我們不僅可以用 \b
來使用字詞,也可以用數字。
例如,樣式 \b\d\d\b
尋找獨立的 2 位數字。換句話說,它尋找被不同於 \w
的字元包圍的 2 位數字,例如空白或標點符號(或文字開頭/結尾)。
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
(或數字或底線),因此測試不適用於其他字元,例如西里爾字母或象形文字。
留言
<code>
標籤,對於多行程式碼,請將它們包覆在<pre>
標籤中,對於超過 10 行的程式碼,請使用沙盒 (plnkr、jsbin、codepen…)