Символи каретки ^
і долара $
мають особливе значення в регулярних виразах. Їх називають “якорі”.
Каретка ^
змушує шукати збіг на початку тексту, а долар $
в кінці.
Наприклад, перевіримо, чи текст починається з Марійка
:
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…)