Hranice slova \b
je test, stejně jako ^
a $
.
Když motor regulárních výrazů (programový modul, který implementuje vyhledávání regulárních výrazů) narazí na \b
, zkontroluje, že pozice v řetězci je hranicí slova.
Existují tři různé polohy, které se kvalifikují jako hranice slov:
- Pokud je na začátku řetězce znakem prvního řetězce slovo
\w
. - Mezi dvěma znaky v řetězci, kde jeden je znak slova
\w
a druhý ne. - Na konci řetězce, pokud je posledním znakem řetězce slovo
\w
.
Například regulární výraz \bJava\b
naleznete v Hello, Java!
, kde Java
je samostatné slovo, ale ne v Hello, JavaScript!
.
alert( "Hello, Java!".match(/\bJava\b/) ); // Java
alert( "Hello, JavaScript!".match(/\bJava\b/) ); // null
V řetězci Hello, Java!
následující pozice odpovídají \b
:
Takže odpovídá vzoru \bHello\b
, protože:
- Na začátku řetězce odpovídá prvnímu testu
\b
. - Pak odpovídá slovu
Hello
. - Poté otestujte
\b
znovu odpovídá, protože jsme mezio
a čárka.
Tedy vzor \bHello\b
by odpovídalo, ale ne \bHell\b
(protože za l
není žádná hranice slova ), nikoli Java!\b
(protože vykřičník není slovní znak \w
, takže za ním není žádná hranice slova).
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)
Můžeme použít \b
nejen slovy, ale také číslicemi.
Například vzor \b\d\d\b
hledá samostatná 2místná čísla. Jinými slovy, hledá dvouciferná čísla, která jsou obklopena znaky odlišnými od \w
, jako jsou mezery nebo interpunkce (nebo začátek/konec textu).
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
Hranice slova \b
nefunguje pro jiné než latinské abecedy
Test hranic slov \b
zkontroluje, že by mělo být \w
na jedné straně od pozice a "ne \w
“ – na druhé straně.
Ale \w
znamená latinské písmeno a-z
(nebo číslici nebo podtržítko), takže test nefunguje pro jiné znaky, např. cyrilice nebo hieroglyfy.