# Начало ^ и конец $ строки, многострочный режим Знак каретки '^' и доллара '$' имеют в регулярном выражении особый смысл. Их называют "якорями" (anchor - англ.). [cut] Каретка ^ совпадает в начале текста, а доллар $ -- в конце. **Якоря являются не символами, а проверками. Они совпадают на "позиции".** Это очень важное отличие по сравнению с символьными классами. Если движок регулярных выражений видит ^ -- он *проверяет* начало текста, $ -- проверяет конец текста, при этом *никаких символов к совпадению не добавляется*. Каретку ^ обычно используют, чтобы указать, что регулярное выражение необходимо проверить именно с начала текста. Например, без каретки: ```js //+ run var str = '100500 попугаев съели 500100 бананов!'; alert(str.match(/\d+/ig) // 100500, 500100 (все числа) ``` А с кареткой: ```js //+ run var str = '100500 попугаев съели 500100 бананов!'; alert(str.match(/^\d+/ig) // 100500 (только в начале строки)*!* ``` Знак доллара $ используют, чтобы указать, что паттерн должен заканчиваться в конце текста. Тот же пример с долларом: ```js //+ run var str = '100500 попугаев съели 500100 бананов!'; alert(str.match(/\d+$/ig) // null (в начале строки чисел нет)*!* ``` Якоря используют одновременно, чтобы указать, что паттерн должен охватывать текст с начала и до конца. Обычно это требуется при валидации. Например, мы хотим проверить, что в переменной `num` хранится именно десятичная дробь. Ей соответствует регэксп \d+\.\d+. Но простая проверка найдёт дробь в любом тексте: ```js //+ run var num = "ля-ля 12.34"; alert( num.match(/\d+\.\d+/ig) ); // 12.34 ``` Если мы хотим проверить, что `num` *целиком* соответствует паттерну \d+\.\d+, то укажем якоря по обе стороны от него: ```js //+ run var num = "ля-ля 12.34"; alert( num.match(/^\d+\.\d+$/ig) ); // null, не дробь var num = "12.34"; alert( num.match(/^\d+\.\d+$/ig) ); // 12.34, дробь! ```