Символи каретки ^ і долара $ мають особливе значення в регулярних виразах. Їх називають “якорі”.
Каретка ^ змушує шукати збіг на початку тексту, а долар $ в кінці.
Наприклад, перевіримо, чи текст починається з Марійка:
let str1 = "Марійка мала маленьке ягня";
alert( /^Марійка/.test(str1) ); // true
Шаблон ^Марійка означає: “шукаємо Марійка на початку рядка”.
Відповідно, ми можемо перевірити чи закінчується рядок на сніг використавши сніг$
let str1 = "ця шерсть була білою як сніг";
alert( /сніг$/.test(str1) ); // true
Звісно, в цих випадках ми можемо використати методи рядка startsWith/endsWith. Проте для складнішого пошуку слід використовувати регулярні вирази.
Перевірка на повний збіг
Обидва якорі разом ^...$ часто використовуються для перевірки того, чи рядок повністю відповідає шаблону. Наприклад, щоб перевірити, чи введені користувачем дані мають правильний формат.
Перевіримо, чи представлено час у рядку в форматі: 12:34. Тобто: дві цифри, потім двокрапка, а потім ще дві цифри.
Мовою регулярних виразів це виглядає так \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
Тут збіг для \d\d:\d\d має починатися точно після початку тексту ^, і не мати нічого зайвого в кінці $.
Весь рядок має бути саме в цьому форматі. Якщо є будь-яке відхилення або додатковий символ, то test поверне false.
Якір поводиться інакше, якщо присутній прапорець m. Ми розглянемо це в наступній статті.
Якорі ^ та $ – це додаткові перевірки. В них нульова ширина.
Іншими словами, вони не додають до результату пошуку символи, а лише змушують рушій регулярних виразів перевірити умову (початок/кінець тексту).
Коментарі
<code>, для кількох рядків – обгорніть їх тегом<pre>, для понад 10 рядків – використовуйте пісочницю (plnkr, jsbin, codepen…)