Добавляем...


Поглощающее соответствие
Одним из свойств регулярных выражений, особенно интересным для тех, кто раньше с такими выражениями не работал, является поглощающее соответствие. Часто называемое также агрессивным или максимальным соответствием оно характеризует тот факт, что интерпретатор всегда пытается найти максимальный набор символов, соответствующих данному элементу. Проще всего понимать это так, что JavaScript будет добавлять символы к соответствию до тех пор, пока это возможно. Например,

var pattern = /(ср.*?ие)/;
var sentence = "Иногда сравнение может вызвать удивление.";
pattern.test(sentence);
alert(RegExp.$1) ;

Можно было бы ожидать, что шаблону будет соответствовать слово "сравнение".

Но на самом деле мы получаем
сравнение может вызвать удивление

Интерпретатор находит самую длинную из возможных соответствующих подстрок — в данном случае она начинается с сочетания "ср" и продолжается до завершающего "ие" в слове "удивление".

Отключение поглощающего соответствия

Можно заставить квантификатор (*,+, ?, {m), {m} или {m,n}) неприменятьпоглощающее соответствие, если разместить за ним знак вопроса. В результате этого найденное выражение будет содержать минимальное число символов, а не максимальное. Чтобы снова рассмотреть наш пример, но на этот раз с минимальным соответствием, используем

var pattern = /(ср.*?ие)/; // * без поглощения, поскольку указан ?
var sentence = "Иногда сравнение может вызвать удивление.";
pattern.test(sentence);
alert(RegExp.$1);


Вывод показывает, что теперь интерпретатор нашел в строке первое, самое короткое, соответствие шаблону:
сравнение

   Мы пытались убедить вас на примерах данной главы, что регулярные выражения обеспечивают, с одной стороны, огромные возможности, а с другой стороны, их использование может вызывать сложности. Работу с регулярными выражениями должен освоить каждый программист, использующий JavaScript, поскольку они существенно упрощают задачу проверки данных, вводимых в формы. Но перед тем как броситься добавлять регулярные выражения в каждый сценарий, необходимо ознакомиться с некоторыми проблемами их использования.
назад: Учет последующего далее:


добавить комментарий
(без перезагрузки и регистрации)


10 случайных разделов

Что ищем на сайте ?


Примеры кода на сайте







@ 2008-2011 Amber
При использовании материалов ссылка на сайт обязательна
Яндекс.Метрика