Expresiile regulate (numite și RegEx sau RegExp) sunt un mod puternic de a analiza textul. Cu RegEx, puteți potrivi șiruri în puncte care se potrivesc cu anumite caractere (de exemplu, JavaScript) sau modele (de exemplu, NumberStringSymbol – 3a &).

.replace metoda este utilizată pe șiruri în JavaScript pentru a înlocui părți ale șirului cu caractere. Este adesea folosit astfel:

const str="JavaScript";
const newStr = str.replace("ava", "-");
console.log(newStr);
// J-Script

După cum puteți vedea mai sus, metoda de înlocuire acceptă două argumente: șirul de înlocuit și cu ce șir ar fi înlocuit.

Iată unde Regex intră.

Utilizarea .replace mai sus este limitat: sunt cunoscute caracterele de înlocuit – „ava”. Ce se întâmplă dacă ne preocupă un model? Poate, un număr, două litere și cuvântul „foo” sau trei simboluri folosite împreună?

ad-banner

.replace metoda folosită cu RegEx poate realiza acest lucru. RegEx poate fi utilizat în mod eficient pentru a recrea modele. Deci, combinând acest lucru cu .replace înseamnă că putem înlocui modele și nu doar caractere exacte.

Cum se folosește RegEx cu .replace în JavaScript

Pentru a utiliza RegEx, primul argument al replace va fi înlocuit cu sintaxa regex, de exemplu /regex/. Această sintaxă servește ca un model în care orice părți ale șirului care se potrivesc cu acesta vor fi înlocuite cu noul șir.

Iată un exemplu:

// matches a number, some characters and another number
const reg = /d.*d/
const str = "Java3foobar4Script"
const newStr = str.replace(reg, "-");
console.log(newStr);
// "Java-Script"

Șirul 3foobar4 se potrivește cu regexul /d.*d/, deci este înlocuit.

Ce se întâmplă dacă am dori să efectuăm înlocuiri în mai multe locuri?

Regex oferă deja asta cu g (global) steag, și același lucru poate fi folosit cu replace. Iată cum:

const reg = /d{3}/g
const str = "Java323Scr995ip4894545t";
const newStr = str.replace(reg, "");
console.log(newStr);
// JavaScrip5t
// 5 didn't pass the test :(

Regexul se potrivește cu părți ale șirului care sunt exact 3 numere consecutive. 323 se potrivește cu el, 995 se potrivește cu el, 489 se potrivește cu acesta și 454 se potrivește cu el. Dar ultimul 5 nu se potrivește cu modelul.

Rezultatul este că JavaScrip5t arată cum se potrivesc corect modelele și se înlocuiește cu noul șir (un șir gol).

Steagul cazului – i poate fi de asemenea folosit. Acest lucru înseamnă că puteți înlocui modele care nu fac sensibilitate la majuscule. Iată cum este folosit:

const reg1 = /dA/
const reg2 = /dA/i
const str = "Jav5ascript"
const newStr1 = str.replace(reg1, "--");
const newStr2 = str.replace(reg2, "--");
console.log(newStr1) // Jav5ascript
console.log(newStr2) // Jav--script

..5a.. nu se potrivește cu prima sintaxă, deoarece RegEx este implicit sensibil la majuscule și minuscule. Dar odată cu utilizarea i flag, așa cum se vede în a doua sintaxă, șirul este așa cum era de așteptat – înlocuit.

Cum se utilizează Split cu expresii regulate

split folosește și RegEx. Ceea ce înseamnă că puteți împărți un șir nu doar la subșiruri care se potrivesc cu caractere exacte, ci și la modele.

Iată o privire rapidă:

const regex = /d{2}a/;
const str = "Hello54 How 64aare you";
console.log(str.split(regex))
// ["Hello54 How ", "are you"]

Șirul era split la 64a deoarece acel șir se potrivește cu regexul specificat.

Rețineți că steagul global – g – în split este irelevant, spre deosebire de i steag și alte steaguri. Asta pentru ca split împarte șirul în mai multe puncte cu care se potrivește regexul.

Înfășurându-se

RegEx face replaceșirurile în JavaScript sunt mai eficiente, mai puternice și mai distractive.

Nu sunteți limitat doar la caractere exacte, ci la modele și înlocuiri multiple simultan. În acest articol, am văzut cum funcționează împreună folosind câteva exemple.

Noroc la RegEx?