12. června 2026

Víceřádkový režim kotev ^ $, příznak „m“

Víceřádkový režim se nastavuje příznakem m.

Má vliv pouze na chování ^ a $.

Ve víceřádkovém režimu jim odpovídá nejen začátek a konec řetězce, ale také začátek a konec řádku.

Hledání na začátku řádku ^

V následujícím příkladu má text více řádků. Vzor /^\d/gm vezme číslici ze začátku každého řádku:

let řetězec = `1. místo: Pankrác
2. místo: Servác
3. místo: Bonifác`;

console.log( řetězec.match(/^\d/gm) ); // 1, 2, 3

Bez příznaku m bude nalezena jen první číslice:

let řetězec = `1. místo: Pankrác
2. místo: Servác
3. místo: Bonifác`;

console.log( řetězec.match(/^\d/g) ); // 1

Je to tím, že stříšce ^ odpovídá standardně jen začátek textu, ale ve víceřádkovém režimu začátek každého řádku.

Poznámka:

„Začátek řádku“ formálně znamená „ihned za zlomem řádku“: testu ^ ve víceřádkovém režimu odpovídají všechny pozice, kterým předchází znak nového řádku \n.

A začátek textu.

Hledání na konci řádku $

Znak dolaru $ se chová obdobně.

Regulární výraz \d$ nalezne poslední číslici na každém řádku:

let řetězec = `Pankrác: 1
Servác: 2
Bonifác: 3`;

console.log( řetězec.match(/\d$/gm) ); // 1,2,3

Bez příznaku m by dolar $ nalezl jen konec celého textu, takže by se našla jen úplně poslední číslice.

Poznámka:

„Konec řádku“ formálně znamená „bezprostředně před zlomem řádku“: testu $ ve víceřádkovém režimu odpovídají všechny pozice následované znakem nového řádku \n.

A konec textu.

Hledání \n místo ^ $

Abychom našli nový řádek, můžeme použít nejenom kotvy ^ a $, ale i znak nového řádku \n.

Jaký je v tom rozdíl? Podívejme se na příklad.

Zde budeme hledat \d\n namísto \d$:

let řetězec = `Pankrác: 1
Servác: 2
Bonifác: 3`;

console.log( řetězec.match(/\d\n/g) ); // 1\n,2\n

Jak vidíme, našly se jen 2 shody namísto tří.

Je to tím, že za 3 nenásleduje nový řádek (ale je tam konec textu, takže odpovídá $).

Další rozdíl: každá shoda nyní obsahuje znak nového řádku \n. Na rozdíl od kotev ^ $, které testují jen podmínku (začátek/konec řádku), je \n znak, takže se stane součástí výsledku.

Znak \n tedy ve vzoru používáme, když potřebujeme ve výsledku znaky nového řádku, zatímco kotvy používáme, když chceme najít něco na začátku nebo konci řádku.

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