Przejdź do treści

RegExp.prototype - JS

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 wzorzec
  • String 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

Komentarze

Zobacz więcej komentarzy

Facebook