Exec
Выполняет поиск совпадений в специфицированной строке. Возвращает результирующий массив.
Метод из
Реализован в
Синтаксис
regexp.exec([str])
regexp([str])
Параметры
regexp |
Имя регулярного выражения. Может быть именем переменной или литералом.
Строка, которая проверяется на совпадение с регулярным выражением.
Описание
Как видно из описания синтаксиса, метод 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.
["dbBd", "bB", "d"]
Индекс совпадений в строке с базой 0.
1
Строка-оригинал.
dbBd
Совпавшие подстроки в кавычках, если имеются (подстроки). Количество подстрок в кавычках не ограничено.
[2] = d
Индекс, с которого начать следующий поиск.
Указывает, использовался ли флаг "i" для игнорирования регистра.
true
Указывает, использовался ли флаг "g" для глобального поиска совпадений.
true
Указывает, использовался ли флаг "m" для глобального поиска совпадений.
false
Текст патэрна.
Если Ваше регулярное выражение использует флаг "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>