|
|
Книги-onlineRegExp Оглавление | Назад | Вперёд | Индекс RegExpОбъект - регулярное выражение, содержащий патэрн регулярного выражения. Он имеет свойства и методы для использования этого регулярного выражения при поиске и замене совпадений в строках. Помимо свойств отдельного объекта регулярного выражения, который Вы создаёте через использование функции-конструктора RegExp, предопределённый объект RegExp имеет static-свойства, которые устанавливаются всякий раз при использовании любого регулярного выражения.
СозданиеФормат текста литерала функции-конструктора RegExp. Формат литерала используется так: /pattern/flags Функция-конструктор используется так: new RegExp("pattern"[, "flags"]) Параметры
Заметьте, что параметры формата литерала не используют знаки кавычек для обозначения строк, а параметры функции-конструктора - используют. Так, следующие выражения создают одно регулярное выражение: /ab+c/i ОписаниеПри использовании функции-конструктора необходимо использовать нормальные правила замены (escape) символов (вставка перед специальными символами обратного слэша \). Например, следующие записи эквивалентны: re = new RegExp("\\w+") В таблице дан полный список и описание специальных символов, которые могут использоваться в регулярных выражениях. Таблица 1.3 Специальные символы в регулярных выражениях
Литеральная нотация предоставляет компиляцию регулярного выражения при вычислении выражения. Используйте литеральную нотацию, если регулярное выражение останется константным. Например, если Вы используете литеральную нотацию для построения регулярного выражения, используемого в цикле, регулярное выражение не будет перекомпилироваться при каждой итерации. Конструктор объекта регулярного выражения, например, new RegExp("ab+c"), предоставляет компиляцию регулярного выражения на этапе прогона. Используйте функцию-конструктор, если Вы знаете, что патэрн регулярного выражения будет изменяться, или если патэрн Вам не известен и получается из другого источника, как при вводе пользователя. После того как Вы определили регулярное выражение, и если это регулярное выражение используется по всему скрипту и может изменяться, Вы можете использовать метод compile для компиляции нового регулярного выражения для обеспечения эффективного многократного использования. Отдельный предопределённый объект RegExp имеется в каждом окне; то есть каждый отдельный поток выполнения JavaScript получает свой собственный объект RegExp. Поскольку каждый скрипт запускается на выполнение без прерывания потока, это гарантирует, что разные скрипты не перепишут значения объекта RegExp. Предопределённый объект RegExp имеет static-свойства input, multiline, lastMatch, lastParen, leftContext, rightContext и с $1 по $9. Свойства input и multiline могут быть предустановлены. Значения других static-свойств устанавливаются после выполнения методов exec и test отдельного объекта регулярного выражения и после выполнения методов match и replace объекта String. Свойства. Резюме.Обратите внимание, что некоторые свойства объекта RegExp имеют длинные и сокращённые (Perl-подобные) имена. Оба имени всегда ссылаются на одно и то же значение. Perl это язык программирования, из которого JavaScript смоделировал регулярные выражения.
Методы. Резюме
Кроме того, этот объект наследует методы watch и unwatch из объекта Object. ПримерыПример 1. Следующий скрипт использует метод replace для переключения слов в строке. Для заменяющего текста скрипт использует значения свойств $1 и $2 глобального объекта RegExp. Обратите внимание, что имя объекта RegExp не предшествует свойствам $, когда они передаются как второй аргумент методу replace. <SCRIPT LANGUAGE="JavaScript1.2"> Пример 2. Здесь RegExp.input устанавливается событием Change. В функции getInfo метод exec использует значение RegExp.input в качестве аргумента. Обратите внимание, что RegExp присоединён к свойствам $. <HTML> <SCRIPT LANGUAGE="JavaScript1.2"> Enter your first name and your age, and then press Enter. <FORM> </HTML> $1, ..., $9Свойства, которые содержат содержат совпадения подстрок в скобках, если имеются. ОписаниеПоскольку input является static-свойством, оно не является свойством отдельного объекта регулярного выражения. Поэтому Вы всегда используете его так: RegExp.input. Количество подстрок в скобках не ограничивается, но предопределённый объект RegExp может содержать только последние девять. Вы можете иметь доступ ко всем подстрокам в скобках через возвращаемые индексы массива. Эти свойства могут использоваться в замещающем тексте для метода String.replace. При таком использовании не вводите перед ними префикс RegExp. Пример далее иллюстрирует это. Если скобки не включены в регулярное выражение, скрипт интерпретирует $n литерально (где n это положительное целое число). ПримерЭтот скрипт использует метод replace для переключения слов в строке. Для заменяющего текста скрипт использует значения свойств $1 и $2 глобального объекта RegExp. Обратите внимание, что имя объекта RegExp не предшествует свойствам $, когда они передаются как второй аргумент методу replace. <SCRIPT LANGUAGE="JavaScript1.2"> $_См. input. $*См. multiline. $&См. lastMatch. $+См. lastParen. $`См. leftContext. $'См. rightContext. compileКомпилирует объект регулярного выражения в процессе выполнения скрипта. Синтаксисregexp.compile(pattern[, flags]) Параметры
ОписаниеМетод compile используется для компиляции регулярного выражения, созданного функцией-конструктором RegExp. Это форсирует компиляцию регулярного выражения только однократно, что означает, что регулярное выражение не компилируется всякий раз при его обнаружении. Используйте метод compile, когда Вам известно, что регулярное выражение будет константным (после получения его патэрна) и будет многократно использоваться в скрипте. Вы можете также использовать метод compile для изменения регулярного выражения в процессе выполнения. Например, если регулярное выражение изменяется, вы можете использовать метод compile для рекомпиляции объекта для повышения эффективности последующего неоднократного использования. Вызов этого метода изменяет значение свойств source, global и ignoreCase регулярного выражения. constructorСпецифицирует функцию, которая создаёт прототип объекта. Обратите внимание, что значением этого свойства является ссылка на саму функцию, а не строка, содержащая имя функции. ОписаниеСм. Object.constructor. execВыполняет поиск совпадения в специфицированной строке. Возвращает результирующий массив. Синтаксисregexp.exec([str]) Параметры
ОписаниеКак видно из описания синтаксиса, метод exec регулярного выражения может быть вызван напрямую (regexp.exec(str)) или неявно (regexp(str)). Если Вы ищете совпадение просто для того, чтобы определить true или false, используйте метод test или метод String search. Если совпадение найдено, метод exec возвращает массив и обновляет свойства объекта регулярного выражения и предопределённого объекта регулярного выражения, RegExp. Если совпадение не найдено, метод exec возвращает null. <SCRIPT LANGUAGE="JavaScript1.2"> В таблице показан результат работы скрипта:
Если в регулярно выражении используется флаг "g", Вы можете многократно использовать метод exec для поиска успешных совпадений в той же самой строке. При этом поиск стартует с подстроки str, специфицированной свойством lastIndex регулярного выражения. Например, такой скрипт: <SCRIPT LANGUAGE="JavaScript1.2">
Found abb. Next match starts at 3 ПримерВ этом примере пользователь вводит имя, и скрипт выполняет совпадения относительно ввода. Затем циклически проходит по массиву, чтобы проверить, нет ли других имён, совпадающих с именем пользователя. В скрипте предполагается, что первые зарегистрированные имена предварительно загружаются в массив A, возможно, с получением их из базы данных party. <HTML> <SCRIPT LANGUAGE="JavaScript1.2"> function lookup() { </SCRIPT> Enter your first name and then press Enter. <FORM> <INPUT TYPE:"TEXT" NAME="FirstName" onChange="lookup(this);"> </FORM> </HTML> globalИспользуется ли флаг "g" в регулярном выражении. Описаниеglobal это свойство отдельного объекта регулярного выражения. Значение global будет true, если флаг "g" используется; иначе - false. Флаг "g" указывает, что регулярное выражение должно проверяться относительно всех возможных совпадений в строке. Вы не можете изменять это свойство явно. Однако вызов метода compile изменяет значение этого свойства. ignoreCaseИспользуется ли флаг "i" в регулярном выражении. ОписаниеignoreCase это свойство отдельного объекта регулярного выражения. Значение ignoreCase будет true, если флаг "i" используется; иначе - false. Флаг "i" указывает, что регистр символов должен игнорироваться при поиске совпадений в строке. Вы не можете изменять это свойство явно. Однако вызов метода compile изменяет значение этого свойства. inputСтрока, относительно которой выполняется поиск совпадений с регулярным выражением. $_ является другим именем этого свойства. ОписаниеПоскольку input это static-свойство, оно не является свойством отдельного объекта регулярного выражения. Вы должны всегда использовать его так: RegExp.input. Если методам exec или test регулярного выражения не предоставляются аргументы и если RegExp.input имеет значение, это значение используется как аргумент для этих методов. Скрипт или браузер могут предварительно устанавливать свойство input. Если это сделано и если не предоставляется явно строковой аргумент, значение input используется как строковой аргумент для методов exec или test объекта регулярного выражения. input устанавливается браузером в следующих случаях:
Значение свойства input очищается после завершения работы обработчика события. lastIndexЦелочисленное свойство чтения/записи, которое специфицирует индекс, с которого стартует следующий поиск совпадения. ОписаниеlastIndex это свойство отдельного объекта регулярного выражения. Это свойство устанавливается, только если регулярное выражение использовало флаг "g" для выполнения глобального поиска. Применяются следующие правила:
Например, рассмотрим следующую последовательность операторов:
lastMatchПоследние совпавшие символы. $& это другое имя этого же самого свойства. ОписаниеПоскольку lastMatch это static-свойство, оно не является свойством отдельного объекта регулярного выражения. Вы должны всегда использовать его так: RegExp.lastMatch. lastParenПоследнее совпадение подстроки в скобках, если имеется. $+ это другое имя этого же самого свойства. ОписаниеПоскольку lastParen iэто static-свойство, оно не является свойством отдельного объекта регулярного выражения. Вы должны всегда использовать его так: RegExp.lastParen. leftContextПодстрока, предшествующая самому последнему совпадению. $` это другое имя этого же самого свойства. ОписаниеПоскольку leftContext это statiс-свойство, оно не является свойством отдельного объекта регулярного выражения. Вы должны всегда использовать его так: RegExp.leftContext. multilineИскать ли на нескольких строках. $* это другое имя этого же самого свойства. ОписаниеПоскольку multiline это statiс-свойство, оно не является свойством отдельного объекта регулярного выражения. Вы должны всегда использовать его так: RegExp.multiline. Значение multiline будет true, если выполняется поиск на нескольких строках текста, false - если поиск обязан остановиться на символе конца строки. Скрипт или браузер могут предустанавливать свойство multiline. Если
обработчик события вызывается из элемента TEXTAREA, браузер
устанавливает multiline в true. prototypeПредоставляет прототип для данного класса. Вы можете использовать этот прототип для добавления свойств или методов во все экземпляры класса. О прототипах см. Function.prototype. rightContextПодстрока, идущая за самым последним совпадением. $' это другое имя этого же самого свойства. ОписаниеПоскольку rightContext это statiс-свойство, оно не является свойством отдельного объекта регулярного выражения. Вы должны всегда использовать его так: RegExp.rightContext. sourceСвойство "только для чтения", содержащее текст патэрна, исключая слэши (/) и флаги "g" и "i". Описаниеsource это свойство отдельного объекта регулярного выражения. Вы не можете изменять это свойство явно. Однако вызов метода compile изменяет значение этого свойства. testВыполняет поиск совпадения регулярного выражения и специфицированной строки. Возвращает true или false. Синтаксисregexp.test([str]) Параметры
ОписаниеЕсли Вам нужно знать, найдено ли совпадение патэрна в строке, используйте метод test (аналогично методу String.search); для получения большей информации (но при более медленном выполнении) используйте метод exec (аналогично методу String.match). ПримерПечатается сообщение, содержание которого зависит от успешности прохождения теста: function testinput(re, str){ toSourceВозвращает строку, представляющую исходный код объекта. СинтаксисtoSource() ПараметрыОписаниеМетод toSource возвращает следующие значения:
Этот метод обычно вызывается в JavaScript внутренне, а не явно в коде. См. такжеObject.toSourcetoStringВозвращает строку, представляющую специфицированный объект. СинтаксисtoString() ПараметрыОписаниеОбъект RegExp переопределяет метод toString объекта Object; он не наследует Object.toString. Для объектов RegExp метод toString возвращает строковое представление объекта. ПримерВыводится строка, отображающая строковое значение объекта RegExp: myExp = new RegExp("a+b+c"); См. такжеObject.toStringvalueOfВозвращает примитивное значение RegExp-объекта. СинтаксисvalueOf() ПараметрыОписаниеМетод valueOf объекта RegExp возвращает примитивное значение RegExp-объекта как тип данных string. Это значение эквивалентно RegExp.toString. Этот метод обычно вызывается в JavaScript внутренне, а не явно в коде. ПримерmyExp = new RegExp("a+b+c"); См. такжеRegExp.toString, Object.valueOf Оглавление | Назад | Вперёд | ИндексДата последнего обновления: 28 мая 1999 года. Внимание! Если у вас не получилось найти нужную информацию, используйте рубрикатор или воспользуйтесь поиском . книги по программированию исходники компоненты шаблоны сайтов C++ PHP Delphi скачать |
|