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…)