Книга: Выразительный JavaScript
Совпадения и группы
Совпадения и группы
Метод test
– самый простой метод проверки регулярок. Он только сообщает, было ли найдено совпадение, или нет. У регулярок есть ещё метод exec
, который вернёт null
, если ничего не было найдено, а в противном случае вернёт объект с информацией о совпадении.
var match = /d+/.exec("one two 100");
console.log(match);
// ? ["100"]
console.log(match.index);
// ? 8
У возвращаемого exec
объекта есть свойство index
, где содержится номер символа, с которого случилось совпадение. А вообще объект выглядит как массив строк, где первый элемент – строка, которую проверяли на совпадение. В нашем примере это будет последовательность цифр, которую мы искали.
У строк есть метод match
, работающий примерно так же.
console.log("one two 100".match(/d+/));
// ? ["100"]
Когда в регулярке содержатся подвыражения, сгруппированные круглыми скобками, текст, совпавший с этими группами, тоже появится в массиве. Первый элемент всегда совпадение целиком. Второй – часть, совпавшая с первой группой (той, у кого круглые скобки встретились раньше всех), затем со второй группой, и так далее.
var quotedText = /'([^']*)'/;
console.log(quotedText.exec("she said 'hello'"));
// ? ["'hello'", "hello"]
Когда группа не найдена вообще (например, если за ней стоит знак вопроса), её позиция в массиве содержит undefined
. Если группа совпала несколько раз, то в массиве будет только последнее совпадение.
console.log(/bad(ly)?/.exec("bad"));
// ? ["bad", undefined]
console.log(/(d)+/.exec("123"));
// ? ["123", "3"]
Группы полезны для извлечения частей строк. Если нам не просто надо проверить, есть ли в строке дата, а извлечь её и создать представляющий дату объект, мы можем заключить последовательности цифр в круглые скобки и выбрать дату из результата exec
.
Но для начала небольшое отступление, в котором мы узнаем предпочтительный способ хранения даты и времени в JavaScript.
- Создаём регулярное выражение
- Проверяем на совпадения
- Ищем набор символов
- Повторяем части шаблона
- Группировка подвыражений
- Совпадения и группы
- Тип даты
- Границы слова и строки
- Шаблоны с выбором
- Механизм поиска
- Откаты
- Метод replace
- Жадность
- Динамическое создание объектов RegExp
- Метод search
- Свойство lastIndex
- Циклы по вхождениям
- Разбор INI файлы
- Международные символы
- Итог
- Упражнения
- Проверяем на совпадения
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- Организация пользователей в группы с помощью ролей
- Создание пользователя и группы на рабочей станции
- Группы
- II. Вовлечение группы в работу и создание атмосферы взаимопонимания
- Фокус-группы вместо пудры
- 4.2.1. Добавление группы
- 4.2.2. Редактирование группы
- Представление дискуссионной группы по управлению проектами
- Выделение группы файлов
- 4.1.1. Виды цен и ценовые группы