Stříška ^
a dolar $
znaky mají v regulárním výrazu zvláštní význam. Říká se jim „kotvy“.
Stříška ^
shoduje se na začátku textu a dolar $
– na konci.
Vyzkoušejme například, zda text začíná Mary
:
let str1 = "Mary had a little lamb";
alert( /^Mary/.test(str1) ); // true
Vzor ^Mary
znamená:„začátek řetězce a pak Mary“.
Podobně můžeme otestovat, zda řetězec končí snow
pomocí snow$
:
let str1 = "its fleece was white as snow";
alert( /snow$/.test(str1) ); // true
V těchto konkrétních případech bychom mohli použít řetězcové metody startsWith/endsWith
namísto. Regulární výrazy by se měly používat pro složitější testy.
Testování úplné shody
Obě kotvy společně ^...$
se často používají k testování, zda řetězec plně odpovídá vzoru. Například pro kontrolu, zda je uživatelský vstup ve správném formátu.
Pojďme zkontrolovat, zda řetězec je čas v 12:34
formát. To znamená:dvě číslice, pak dvojtečka a pak další dvě číslice.
V jazyce regulárních výrazů je to \d\d:\d\d
:
let goodInput = "12:34";
let badInput = "12:345";
let regexp = /^\d\d:\d\d$/;
alert( regexp.test(goodInput) ); // true
alert( regexp.test(badInput) ); // false
Zde je shoda pro \d\d:\d\d
musí začínat přesně za začátkem textu ^
a konec $
musí okamžitě následovat.
Celý řetězec musí být přesně v tomto formátu. Pokud se vyskytne nějaká odchylka nebo znak navíc, výsledkem je false
.
Kotvy se chovají jinak, pokud je příznak m
je přítomen. To uvidíme v dalším článku.
Kotvy ^
a $
jsou testy. Mají nulovou šířku.
Jinými slovy, neodpovídají znaku, ale spíše nutí motor regulárních výrazů, aby zkontroloval podmínku (začátek/konec textu).