MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Căutarea în șir

Pentru a căuta într-un șir un subșir care se potrivește cu o expresie regulată, se utilizează metoda exec() a obiectului RegExp. Această metodă primește șirul în care se face căutarea și returnează rezultatul sub formă de array. De exemplu:

const contacts = "Email: mycomp@gmail.com  Phones: +1-234-567-8901 and +1-234-567-8902";
const phonePattern = /\+\d-\d{3}-\d{3}-\d{4}/;
const result = phonePattern.exec(contacts);
console.log(result);    
// Ieșirea la colnsolă
// ['+1-234-567-8901', index: 32, input: 'Email: mycomp@gmail.com  Phones: +1-234-567-8901 and +1-234-567-8902', groups: undefined]

Aici verificăm dacă în șirul "contacts" există un text care corespunde expresiei regulate "phonePattern" (adică reprezintă un număr de telefon). Rezultatul este returnat sub formă de array, având următoarele elemente:

  • Primul element al array-ului - textul care corespunde direct expresiei regulate. În exemplul de mai sus, acesta este textul "+1-234-567-8901"
  • Al doilea parametru - index - este indexul textului găsit în șir
  • Al treilea parametru - input - este șirul de intrare
  • Ultimul element reprezintă grupurile separate

Dacă în șir nu este găsit un text care să corespundă expresiei regulate, atunci este returnat null.

Vom extrage elementele separate ale acestui array:

const contacts = "Email: mycomp@gmail.com Phones: +1-234-567-8901 and +1-234-567-8902";
const phonePattern = /\+\d-\d{3}-\d{3}-\d{4}/;
const result = phonePattern.exec(contacts);
if(result){
   console.log("Phone number:", result[0]);    // +1-234-567-8901
   console.log("Index:", result.index);     // 32
}

Totuși, în șirul nostru avem două numere de telefon (poate și mai multe). Și vrem să extragem toate aceste numere, nu doar primul. În acest caz, trebuie să folosim opțiunea de flag "g".

Astfel, vom modifica exemplul precedent, aplicând flag-ul "g":

const contacts = "Email: mycomp@gmail.com Phones: +1-234-567-8901 and +1-234-567-8902";
const phonePattern = /\+\d-\d{3}-\d{3}-\d{4}/g;
let result;
while ((result = phonePattern.exec(contacts)) !== null){
   console.log("Phone number:", result[0]);
   console.log("Index: ", result.index);
}

Într-un ciclu while, extragem toate potrivirile șablonului din text în variabila result, până când nu mai există potriviri. Observați unde este specificat în expresia regulată opțiunea de flag g: /\+\d-\d{3}-\d{3}-\d{4}/g. Afișajul în consolă:

Phone number: +1-234-567-8901
Index:  32
Phone number: +1-234-567-8902
Index:  52
← Lecția anterioară Lecția următoare →