JavaScript Регулярные выражения Введение Создание регулярных выражений Флаги (способы поиска по шаблону) Метасимволы Специальные символы Квантификаторы повторения Позиционные проверки Управляющие символы Методы и свойства объекта RegExp() Статические свойства объекта RegExp() Строковые методы для работы с регулярными выражениями
Введение Регулярные выражения это формальный язык поиска и осуществления манипуляций с подстроками в тексте, задающий шаблон (образец) из символов и метасимволов и задающий правило поиска
Создание регулярных выражений // Вариант первый var regTemplate = new RegExp(/шаблон/флаги); // Вариант второй var regTemplate = new RegExp('шаблон', ' флаги '); С помощью объекта new RegExp() var regTemplate = /шаблон/флаги; С помощью регулярного выражения для поиска (pattern)
Флаги (способы поиска по шаблону) g (global) глобальный поиск соответствия по всей строке; i (ignoreСase) нечувствительность к регистру; m (multiline) многострочный поиск var regTemplate = /be/; var str = 'To be, or not to be '; //Найдёт только первое вхождение строки var regTemplate = /be/g; var str = 'To be, or not to be '; //Найдёт все вхождения строки Глобальный поиск: var regTemplate = /be/; var str = 'TO BE OR NOT TO BE'; //Не найдет вхождений, если строка находится в другом регистре var regTemplate = /be/i; var str = 'TO BE OR NOT TO BE'; //Найдёт все вхождение строки, не смотря на регистр Нечувствительность к регистру:
Флаги (способы поиска по шаблону) var regTemplate = /^[\w\, ]+not[\w\, ]+$/; var str = 'To be, \r\n or not to be '; // Не найдёт совпадений var regTemplate = /^[\w\, ]+not[\w\, ]+$/m; var str = 'To be, \r\n or not to be '; //Найдёт все вхождения строки Многострочный поиск: Опция многострочного поиска позволяет проводить сопоставление с образцом строкового выражения, состоящего из нескольких строк текста, соединенных символами разрыва строки. По умолчанию, сопоставление с образцом прекращается, если найден символ разрыва строки Многострочный поиск работает только если в шаблоне указаны начало строки «^» и конец строки «$»
Метасимволы Сокращённый оператор Значение [abc]Любой из перечисленных в скобках символов, либо диапазона символов [^abc]Любой символ, кроме перечисленных в скобках, либо диапазона символов.Любой символ, кроме символа перехода на новую строку ^Соответствует позиции в начале строки, в которой выполняется поиск $Соответствует позиции в конце строки, в которой выполняется поиск | Указывает на возможность выбора одного из двух или нескольких элементов () Отмечает начало и конец части выражения. Части выражения можно сохранять для последующего использования Если в проверяемой строке имеются символы, схожие с метасимволами, то их необходимо экранировать символом «/». Например, для строки «100$» следует создать выражение /^100\$$/
Специальные символы Сокращённый оператор Значение \d Цифра. Эквивалентно [0-9] \DЛюбой символ, кроме цифр. Эквивалентно [^0-9] \w Цифра, буква (латинский алфавит) или знак подчеркивания. Эквивалентно [0-9a-zA-Z_] \W Любой символ, кроме цифр, букв (латинский алфавит) и знака подчеркивания. Эквивалентно [^0-9a-zA-Z_] \s Пробельный символ (пробел, табуляция, перевод строки и т. п.) \SЛюбой символ, кроме пробельных \b Граница слова, т. е. позиция между словом и пробелом или переводом строки \BЛюбая позиция кроме границы слова [\b]Символ возврата на одну позицию \xhh Символ с кодом hh (2 шестнадцатиричных цифры) \uhhhh Символ с кодом hh (4 шестнадцатиричных цифры)
Квантификаторы повторения Параметр Значение {m, n}Повторение предшествующего элемента от m до n раз {m, }Повторение предшествующего элемента m или более раз {m}{m}Повторение предшествующего элемента m раз * Соответствует предыдущему символу или части выражения, повторяющимся ноль или более раз. Аналогично параметру {0,} + Соответствует предыдущему символу или части выражения, повторяющимся один или более раз. Аналогично параметру {1,} ? Соответствует предыдущему символу или части выражения, повторяющимся ноль или один раз. Аналогично параметру {0,1}
Позиционные проверки Параметр Значение (?:m) Находит соответствие, но не запоминает найденное m(?=n) Поиск с «заглядыванием вперёд». Находит m только если за m следует n m(?!n) Поиск с «заглядыванием вперёд». Находит m только если за m не следует n
Управляющие символы Символ Значение \n\n Переход на новую строку \r Возврат каретки \f Конец страницы \t\t Горизонтальная табуляция \v\v Вертикальная табуляция
Методы и свойства объекта RegExp() var regTemplate = /^be$/; alert(regTemplate.test('be')); //Выведет true, т. к. строка соответствует шаблону alert(regTemplate.test('not be')); //Выведет false, т. к. строка НЕ соответствует шаблону test() вывод строкового представления объекта var regTemplate = /^be$/; alert(regTemplate. toString()); //Выведет строку регулярного выражения «^be$» toString() Проверка соответствия строки данному выражению exec() возвращает объект результатов совпадений или «null», если ничего не найдено Методы объекта RegExp() var regTemplate = /(be).+(be)/g; var str = 'To be or not to be'; //Не найдет вхождений, если строка находится в другом регистре var result = regTemplate.exec(str); // result[0] = 'be, or not to be'; строка соответствия // result[1] = 'be'; строка соответствия // result[2] = 'be'; строка соответствия // result[index] = 3; позиция первого вхождения строки соответствия // result[lastIndex] = 19; позиция последнего вхождения строки соответствия (только в IE)
Методы и свойства объекта RegExp() Свойство Значение global Логическое значение, указывающее, установлен ли флаг глобальности ignoreCase Логическое значение, указывающее, установлен ли флаг чувствительности к регистру multiline Логическое значение, указывающее, установлен ли флаг многострочности lastIndex Индекс последнего совпадения source Строковая форма регулярного выражения Свойства объекта RegExp()
Статические свойства объекта RegExp() Свойство Альтерн. форма Значение $$Экранированный знак доллара $1, $2 … $9 Строки, соответствующие первым девяти подвыражениям в скобках для последнего найденного соответствия шаблону index Значение индекса первого символа в строке, с которого начинается соответствие шаблону. Не является частью стандарта ECMA input$_ Строка, используемая для сравнения с данным шаблоном по умолчанию lastIndex Целочисленное значение, указывающее позицию в строке, с которой будет начинаться следующий поиск lastMatch$& Строка с соответствующим шаблону текстом, найденному в результате последней операции сравнения lastParen$+ Строка, соответствующая последнему заключённому в скобки подвыражению для последнего найденного соответствия шаблону leftContext $` Строка с текстом, размещённым слева от последнего найденного соответствия шаблону rightContext $'$' Строка с текстом, размещённым справа от последнего найденного соответствия шаблону
Строковые методы для работы с регулярными выражениями Свойство Значение search() Возвращает индекс символа, с которого начинается первое обнаружение соответствия шаблону split() Разделяет строку на массив подстрок replace() Возвращает строку, полученную в результате замены текста match() Возвращает массив результатов сравнения
Задание Запросите у пользователя мобильный номер телефона: o Номер должен начинаться с «+7» или «8»; o Следующие три цифры могут быть в скобках, могут или без; o Остальные группы цифр могут не разделяться, или разделяться знаком «-» или пробелом. Напр. xxx-xx-xx, xxx xx xx или xxxxxxx; o Если номер введён верно выведите его, если нет снова запросите ввести его, отобразив в вызове неправильное значение. Выведенный номер должен начинаться с «+7» и логически разделяться пробелами, напр