Dopasowanie wzorca - exec
Jak pobrać wszystkie dopasowania wzorca (wyrażenia regularnego) do podanego tekstu?
RegExp.prototype.exec(string)
- Parametry:
String
string - dopasowywany tekst- Wartość:
Array
- tablica dopasowań z dodatkowymi właściwościami:Number
index - pozycja w tekście (licząc od zera), gdzie został dopasowany wzorzecString
input - wartość argumentu string
Null
- tekst nie został dopasowany do wyrażenia regularnego
Próbuje dopasować tekst do podanego wzorca - wyrażenia regularnego. Jeżeli się to uda, zwraca pierwszy dopasowany fragment tekstu oraz każdą jego część, która w wyrażeniu była zapisana w nawiasie. W przypadku dopasowania globalnego - kiedy wyrażenie regularne posiada flagę g - dodatkowo do własności lastIndex przypisywana jest pozycja w tekście (licząc od zera) po ostatnim znaku dopasowanego fragmentu. To zachowanie można wykorzystać do wyszukiwania w pętli wszystkich dopasowań wzorca, które znajdują się w podanym tekście.
Jeżeli chcesz tylko sprawdzić, czy określony tekst pasuje do wzorca, użyj funkcji RegExp.prototype.test.
Przykład RegExp.prototype.exec
var y = /abc/.exec("ABCd efg abc"); // ["abc"] y.index; // 9 y.input; // "ABCd efg abc" y = /(ab)c/.exec("ABCd efg abc"); // ["abc", "ab"] y.index; // 9 y = /abc/i.exec("ABCd efg abc"); // ["ABC"] y.index; // 0 y = /(ab)c/i.exec("ABCd efg abc"); // ["ABC", "AB"] y.index; // 0 var x = /abc/g; y = x.exec("abcd efg abc"); // ["abc"] x.lastIndex; // 3 y.index; // 0 x = /(ab)c/g; y = x.exec("abcd efg abc"); // ["abc", "ab"] x.lastIndex; // 3 y.index; // 0 x = /abc/ig; y = x.exec("ABCd efg abc"); // ["ABC"] x.lastIndex; // 3 y.index; // 0 x = /(ab)c/ig; y = x.exec("ABCd efg abc"); // ["ABC", "AB"] x.lastIndex; // 3 y.index; // 0 // Wyszukanie wszystkich dopasowań: x = /(ab)c/ig; while (y = x.exec("ABCd efg abc")) y.index; // 0, 9 /hij/.exec("abcd efg abc"); // null /ABC/.exec("abcd efg abc"); // null /(AB)C/.exec("abcd efg abc"); // null /hij/g.exec("abcd efg abc"); // null /ABC/g.exec("abcd efg abc"); // null /(AB)C/g.exec("abcd efg abc"); // null