Якоря не совпадают с символами — они указывают позицию в тексте. Два главных якоря:
• ^ — начало строки; • $ — конец строки.
Без якорей шаблон ищет совпадение где угодно внутри текста. Шаблон cat найдёт «cat» и в «scatter». А вот с якорями мы привязываем шаблон к границам:
^cat — строка начинается с «cat» cat$ — строка заканчивается на «cat» ^cat$ — строка состоит РОВНО из «cat»
Это критично для валидации (проверки формата). Сравните:
\d{4} — где-то есть 4 цифры подряд (найдёт и в «год 2026 был») ^\d{4}$ — строка целиком — ровно 4 цифры (например, «2026»)
Без ^ и $ проверка «это четырёхзначный год?» сработает неверно: пройдёт любая строка, где встречаются 4 цифры. Поэтому при валидации почти всегда оборачивают шаблон в ^...$ — чтобы проверять всю строку целиком, а не её кусочек.