# Паттерны и флаги Регулярные выражения –- мощное средство поиска и замены в строке. В JavaScript регулярные выражения реализованы отдельным объектом `RegExp` и интегрированы в методы строк. [cut] ## Регэкспы Регулярное выражение (оно же "регэксп", "регулярка" или просто "рег"), состоит из *паттерна* (он же "шаблон") и необязательных *флагов*. Синтаксис создания регулярного выражения: ```js var regexp = new RegExp("шаблон", "флаги"); ``` Как правило, используют более короткую запись через слеши `/`: ```js var regexp = /шаблон/; // без флагов var regexp = /шаблон/gmi; // с флагами gmi (изучим их дальше) ``` Слэши `'/'` говорят JavaScript о том, что это регулярное выражение. Они играют здесь ту же роль, что и кавычки для обозначения строк. ## Использование Основа регулярного выражения -- паттерн. Это строка, которую можно расширить специальными символами, которые делают поиск намного мощнее. Если флагов и специальных символов нет, то поиск по паттерну -- то же самое, что и обычный поиск подстроки: ```js //+ run var str = "Я люблю JavaScript!"; // будем искать в этой строке var regexp = /лю/; alert( str.search(regexp) ); // 2 ``` Сравните с обычным поиском: ```js //+ run var str = "Я люблю JavaScript!"; var substr = "лю"; alert( str.indexOf(substr) ); // 2 ``` Как видим, то же самое, разве что для регэкспа использован метод [:String#search(reg)], а для строки [:String#indexOf(substr)]. Но это соответствие лишь кажущееся. Очень скоро мы усложним регулярные выражения, и тогда появятся отличия. [smart header="Цветовые обозначения"] Здесь и далее используется следующая цветовая схема:
красный
синий
зеленый
/регэксп/
без флагов и спец. символов, которые мы изучим далее -- это то же самое, что и обычный поиск подстроки в строке.