12. června 2026

Hranice slov: \b

Hranice slov \b je test, podobně jako ^ a $.

Když motor regulárních výrazů (programový modul, který implementuje hledání RV) narazí na \b, prověří, zda tato pozice v řetězci je hranicí slova.

Za hranici slova se považují celkem tři různé pozice:

  • Na začátku řetězce, jestliže první znak v řetězci je slovní znak \w.
  • Mezi dvěma znaky v řetězci, jestliže jeden z nich je slovní znak \w a druhý ne.
  • Na konci řetězce, jestliže poslední znak v řetězci je slovní znak \w.

Například regulární výraz \bJava\b bude nalezen v Hello, Java!, kde je Java 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! odpovídají \b následující pozice:

Odpovídá tedy vzoru \bHello\b, protože:

  1. První test \b najde shodu na začátku řetězce.
  2. Pak se shoduje slovo Hello.
  3. Pak znovu najde shodu test \b, jelikož jsme mezi o a čárkou.

Vzor \bHello\b tedy najde shodu, ale vzor \bHell\b ne (protože za l není hranice slova) a Java!\b také ne (protože vykřičník není slovní znak \w, takže za ním nenásleduje hranice slova).

alert( "Hello, Java!".match(/\bHello\b/) ); // Hello
alert( "Hello, Java!".match(/\bJava\b/) );  // Java
alert( "Hello, Java!".match(/\bHell\b/) );  // null (žádná shoda)
alert( "Hello, Java!".match(/\bJava!\b/) ); // null (žádná shoda)

Můžeme používat \b nejenom se slovy, ale i s číslicemi.

Například vzor \b\d\d\b hledá samostatná 2-ciferná čísla. Jinými slovy, hledá 2-ciferná čísla, která jsou obklopena jinými znaky než \w, například mezerami nebo interpunkčními znaménky (nebo začátkem/koncem 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 slov \b nefunguje pro nelatinské abecedy

Test hranice slova \b prověřuje, zda je na jedné straně pozice \w a na druhé „něco jiného než \w“.

Avšak \w znamená písmeno latinské abecedy a-z (nebo číslici či podtržítko), takže na jiných znacích, např. písmenech kyrilice nebo hieroglyfech, test nebude fungovat.

Úlohy

Čas je ve formátu: hodiny:minuty. Hodiny i minuty mají dvě číslice, například 09:00.

Vytvořte regulární výraz, který najde čas v řetězci: Snídaně je v 09:00 v místnosti 123:456.

P.S. V této úloze zatím nemusíte ověřovat správnost času, takže platný výsledek může být i 25:99.

P.P.S. Regulární výraz by neměl najít 123:456.

Odpověď: \b\d\d:\d\d\b.

alert( "Snídaně je v 09:00 v místnosti 123:456.".match( /\b\d\d:\d\d\b/ ) ); // 09:00
Mapa tutoriálu

Komentáře

přečtěte si před komentováním…
  • Máte-li návrhy na zlepšení, vytvořte prosím issue na GitHubu nebo pull request místo komentáře.
  • Pokud v článku něčemu nerozumíte, napište prosím, čemu přesně a na kterém místě.
  • Pro vložení několika slov kódu použijte značku <code>, pro několik řádků je obalte značkou <pre>, pro více než 10 řádků vložte odkaz na pískoviště (plnkr, jsbin, codepen…)