Dokumentacja języka JavaScript 1.5:Obiekty:RegExp:exec
z Mozilla Developer Center, polskiego centrum programistów Mozilli.
UWAGA: Tłumaczenie tej strony nie zostało zakończone.
Może być ona niekompletna lub wymagać korekty.
Chcesz pomóc? | Dokończ tłumaczenie | Sprawdź ortografię | Więcej takich stron...
Spis treści |
[edytuj] Podsumowanie
Wykonuje operacje wyszukiwania danego łańcucha znaków. Wynikiem jest macierz.
| Metoda obiektu: RegExp | |
| Zaimplementowana w: | JavaScript 1.2, NES3.0 |
| Wersja ECMA: | ECMA-262, edycja 3 (tylko pierwsza składnia) |
[edytuj] Składnia
regexp.exec([str])
regexp([str])
[edytuj] Parametry
-
regexp - Nazwa wyrażenia. Może być zmienną lub literałem.
-
str - Łańcuch znaków, do którego ma być porównane wyrażenie.
[edytuj] Opis
Jak wynika z opisu składni metoda exec może być wywołana w sposób bezpośredni (za pomocą regexp.exec(str)) lub pośredni (za pomocą regexp(str)).
Jeśli chcesz uzyskać jako rezultat wyszukania tylko informacje prawda lub fałsz użyj metody test lub też String search.
Jeśli wynik będzie pozytywny metoda exec zwróci macierz oraz zaktualizuje własności obiektu. W przeciwnym wypadku zostanie zwrócone null.
Przejrzyj poniższy przykład:
<SCRIPT LANGUAGE="JavaScript1.2">
//Znajdź pojedyncze "d" poprzedzone przez jedno lub więcej "b", po których następuje pojedyncze "d"
//Zapamiętaj znalezione "b" oraz następujące "d"
//Ignoruj wielkość liter
myRe=/d(b+)(d)/ig;
myArray = myRe.exec("cdbBdbsbz");
</SCRIPT>
Poniższa tabela pokazuje rezultaty wygenerowane przez skrypt:
| Obiekt | Właściwość/Indeks | Opis | Przykład |
myArray |
|
Zawartość myArray. |
["dbBd", "bB", "d"] |
index |
Indeks wyszukania łańcucha znaków rozpoczynający się od 0. | 1 |
|
input |
Ciąg bazowy. | cdbBdbsbz |
|
[0] |
Ostatnie odnalezione znaki. | dbBd |
|
[1], ...[n] |
Wyszukane podłańcuch w nawiasach. Liczba możliwych podłańcuch jest nieokreślona. | [1] = bB |
|
myRe |
lastIndex |
Indeks, od którego rozpocząć nowe wyszukiwanie. | 5 |
ignoreCase |
Wskazuje czy flaga "i" została użyta. |
true |
|
global |
Wskazuje czy flaga "g" została użyta do globalnego przeszukiwania. |
true |
|
multiline |
Wskazuje czy flaga "m" została użyta do globalnego przeszukiwania. |
false |
|
source |
Tekst wyszukiwanego łańcucha znaków. | d(b+)(d) |
If your regular expression uses the "g" flag, you can use the exec method multiple times to find successive matches in the same string. When you do so, the search starts at the substring of str specified by the regular expression's lastIndex property. For example, assume you have this script:
<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>
Skrypt ten wyświetli następujący tekst:
Found abb. Next match starts at 3 Found ab. Next match starts at 9
[edytuj] Przykłady
[edytuj] Przykład: Zastosowanie exec
In the following example, the user enters a name and the script executes a match against the input. It then cycles through the array to see if other names match the user's name.
This script assumes that first names of registered party attendees are preloaded into the array A, perhaps by gathering them from a party database.
<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>
Wpisz swoje imię i naciśnij Enter.
<FORM> <INPUT TYPE:"TEXT" NAME="FirstName" onChange="lookup(this);"> </ FORM>
</HTML>