Ядро JavaScript 1.5. Справочник

Exec


Выполняет поиск совпадений в специфицированной строке. Возвращает результирующий массив.

Метод из

Реализован вJavaScript 1.2, NES 3.0

Версия ECMAECMA 262, Edition 3 (только первый синтаксис)


Синтаксис

regexp.exec([str])

regexp([str])

Параметры

regexp

Имя регулярного выражения. Может быть именем переменной или литералом.

str

Строка, которая проверяется на совпадение с регулярным выражением.

Описание



Как видно из описания синтаксиса, метод exec

регулярного выражения может вызываться явно (regexp.exec(str)), или неявно (regexp(str)).

Если поиск выполняется, чтобы просто найти true или false, используйте метод или метод String .

Если совпадение найдено, метод exec возвращает массив и обновляет свойства объекта регулярного выражения.

Если совпадение не найдено, метод exec возвращает null.

Рассмотри пример:

<SCRIPT LANGUAGE="JavaScript1.2">

//Совпадение с d с последующими одним или более b, с последующим d

//Запомнить совпавшие b с последующим d

//Игнорировать регистр

myRe=/d(b+)(d)/ig;

myArray = myRe.exec("cdbBdbsbz");

</SCRIPT>

В таблице показаны результаты работы этого скрипта:

Объект

Свойство/Индекс

Описание

Пример myArray 

Контекст myArray.

["dbBd", "bB", "d"]index

Индекс совпадений в строке с базой 0.

1input

Строка-оригинал.cdbBdbsbz[0]Последние совпавшие символы.

dbBd[1], ...[n]

Совпавшие подстроки в кавычках, если имеются (подстроки). Количество подстрок в кавычках не ограничено.

[1] = bB
[2] = dmyRelastIndex

Индекс, с которого начать следующий поиск.5 ignoreCase

Указывает, использовался ли флаг "i" для игнорирования регистра.

trueglobal

Указывает, использовался ли флаг "g" для глобального поиска совпадений.

true multiline

Указывает, использовался ли флаг "m" для глобального поиска совпадений.

falsesource

Текст патэрна.d(b+)(d)

Если Ваше регулярное выражение использует флаг "g", Вы можете использовать метод exec

несколько раз для поиска успешных совпадений в той же строке. Если Вы это сделаете, поиск начинается с подстроки в str, специфицированной свойством lastIndex

в регулярном выражении. Например, расмотрим этот скрипт:

<SCRIPT LANGUAGE="JavaScript1.2">

myRe=/ab*/g;

str = "abbcdefabh";

myArray = myRe.exec(str);

document.writeln("Found " + myArray[0] +

   ". Next match starts at " + myRe.lastIndex)

mySecondArray = myRe.exec(str);

document.writeln("Found " + mySecondArray[0] +

   ". Next match starts at " + myRe.lastIndex)

</SCRIPT>

Будет выведен следующий текст:

Found abb. Next match starts at 3
Found ab. Next match starts at 9

Примеры

Здесь пользователь вводит имя, и скрипт выполняет поиск совпадений относительно этого ввода. Затем он прогоняет массив по циклу для поиска других имён, совпадающих с пользовательским именем.

Этот скрипт предполагает, что первые имена зарегистрированных участников вечеринки предварительно загружены в массив A, возможно, чрез получение их из базы данных.

<HTML>

<SCRIPT LANGUAGE="JavaScript1.2">

A = ["Frank", "Emily", "Jane", "Harry", "Nick", "Beth", "Rick",

      "Terrence", "Carol", "Ann", "Terry", "Frank", "Alice", "Rick",

      "Bill", "Tom", "Fiona", "Jane", "William", "Joan", "Beth"]

function lookup() {

   firstName = /\w+/i();

   if (!firstName)

      window.alert (RegExp.input + " isn't a name!");

   else {

      count = 0;

      for (i=0; i<A.length; i++)

         if (firstName[0].toLowerCase() == A[i].toLowerCase()) count++;

      if (count ==1)

         midstring = " other has ";

      else

         midstring = " others have ";

      window.alert ("Thanks, " + count + midstring + "the same name!")

   }

}

</SCRIPT>

Enter your first name and then press Enter.

<FORM> <INPUT TYPE:"TEXT" NAME="FirstName" onChange="lookup(this);"> </ FORM>

</HTML>



Содержание раздела