JavaScript Регулярные выражения

реклама
JavaScript
Регулярные выражения
•
•
•
•
•
•
•
•
•
•
•
Введение
Создание регулярных выражений
Флаги (способы поиска по шаблону)
Метасимволы
Специальные символы
Квантификаторы повторения
Позиционные проверки
Управляющие символы
Методы и свойства объекта RegExp()
Статические свойства объекта RegExp()
Строковые методы для работы с регулярными выражениями
Введение
Регулярные выражения — это формальный язык поиска и осуществления
манипуляций с подстроками в тексте, задающий шаблон (образец) из символов и
метасимволов и задающий правило поиска
Создание регулярных выражений
С помощью объекта new RegExp()
<script type="text/javascript">
// Вариант первый
var regTemplate = new RegExp(/шаблон/флаги);
// Вариант второй
var regTemplate = new RegExp('шаблон', ' флаги ');
</script>
С помощью регулярного выражения для поиска (pattern)
<script type="text/javascript">
var regTemplate = /шаблон/флаги;
</script>
Флаги (способы поиска по шаблону)
• 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 раз
*
Соответствует предыдущему символу или части выражения, повторяющимся
ноль или более раз. Аналогично параметру {0,}
+
Соответствует предыдущему символу или части выражения, повторяющимся
один или более раз. Аналогично параметру {1,}
?
Соответствует предыдущему символу или части выражения, повторяющимся
ноль или один раз. Аналогично параметру {0,1}
Позиционные проверки
Параметр
(?:m)
Значение
Находит соответствие, но не запоминает найденное
m(?=n)
Поиск с «заглядыванием вперёд». Находит m только если за m следует n
m(?!n)
Поиск с «заглядыванием вперёд». Находит m только если за m не следует n
Управляющие символы
Символ
Значение
\n
Переход на новую строку
\r
Возврат каретки
\f
Конец страницы
\t
Горизонтальная табуляция
\v
Вертикальная табуляция
Методы и свойства объекта RegExp()
Методы объекта RegExp()
toString() — Проверка соответствия строки данному выражению
var regTemplate = /^be$/;
alert(regTemplate. toString()); //Выведет строку регулярного выражения «^be$»
test() — вывод строкового представления объекта
var regTemplate = /^be$/;
alert(regTemplate.test('be')); //Выведет true, т. к. строка соответствует шаблону
alert(regTemplate.test('not be')); //Выведет false, т. к. строка НЕ соответствует шаблону
exec() — возвращает объект результатов совпадений или «null», если ничего не найдено
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()
Свойства объекта RegExp()
Свойство
global
ignoreCase
Значение
Логическое значение, указывающее, установлен ли флаг глобальности
Логическое значение, указывающее, установлен ли флаг чувствительности к
регистру
multiline
Логическое значение, указывающее, установлен ли флаг многострочности
lastIndex
Индекс последнего совпадения
source
Строковая форма регулярного выражения
Статические свойства объекта 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» и логически
разделяться пробелами, напр. +7 123 456 78 90
Скачать