JavaScript String.Replace () Példa a RegEx-el

A reguláris kifejezések (más néven RegEx vagy RegExp) hatékony módszer a szöveg elemzésére. A RegEx használatával a karakterláncokat olyan pontokban illesztheti össze, amelyek megegyeznek meghatározott karakterekkel (például JavaScript) vagy mintákkal (például NumberStringSymbol - 3a &).

A .replacemódszert a JavaScript karakterláncainál használják, hogy a karakterlánc részeit karakterekkel cseréljék le. Gyakran használják így:

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

Mint fent láthatja, a csere metódus két argumentumot fogad el: a cserélendő karakterláncot és azt, hogy mire cserélje le a karakterláncot.

Itt jön be a Regex .

A .replacefentiek használata korlátozott: a cserélendő karakterek ismertek - "ava". Mi van, ha inkább egy minta foglalkoztat? Esetleg egy szám, két betű és a "foo" szó, vagy három szimbólum együtt használva?

A vele .replacealkalmazott módszerrel RegExez elérhető. RegExhatékonyan felhasználható minták újrateremtésére. Tehát ezt kombinálva .replaceazt jelenti, hogy nem csak pontos karaktereket, hanem mintákat is kicserélhetünk.

Hogyan lehet használni RegExa .replaceJavaScript-ben

A RegEx használatához a (z) első argumentuma replacepl /regex/. A regex szintaxissal lesz helyettesítve . Ez a szintaxis mintaként szolgál, ahol a karakterlánc minden olyan része, amely illeszkedik hozzá, lecserélődik az új részstringre.

Íme egy példa:

// 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" 

A karakterlánc 3foobar4megegyezik a regexszel /\d.*\d/, ezért kicserélődik.

Mi lenne, ha több helyen akarnánk cseréket végrehajtani?

Regexezt már felajánlja a g(globális) zászlóval, és ugyanez használható a replace. Itt van, hogyan:

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

A regex megegyezik a karakterlánc olyan részeivel, amelyek pontosan 3 egymást követő szám. 323illeszkedik, 995illeszkedik, 489illeszkedik és 454illeszkedik. De az utolsó 5nem egyezik a mintával.

Az eredmény az, hogy JavaScrip5tmegmutatja, hogy a minták hogyan illeszkednek helyesen, és felváltja az új alszöveget (egy üres karakterláncot).

A tok zászló - iszintén használható. Ez azt jelenti, hogy kicserélheti a kis- és nagybetűk nélküli mintákat. Így használják:

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..nem egyezik az első szintaxissal, mert a RegEx alapértelmezés szerint kis- és nagybetű-érzékeny. De a izászló használatával , amint az a második szintaxisban látható, a karakterlánc a vártnak megfelelően változik - kicserélődik.

A Split használata a reguláris kifejezésekkel

splitfelhasználja is RegEx. Ami azt jelenti, hogy egy karakterláncot fel lehet osztani nemcsak a pontos karaktereknek, hanem a mintáknak is megfelelő alsztringeken.

Itt egy rövid áttekintés:

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

A karaktersorozat azért volt split, 64amert az az alsor megfelel a megadott regexszel.

Ne feledje, hogy a globális flag - g- in splitlényegtelen, ellentétben a izászlóval és más zászlókkal. Ez azért van, mert splita karakterláncot felosztja a regex több pontján.

Csomagolás

RegExreplacehatékonyabbá, erőteljesebbé és szórakoztatóbbá teszi a JavaScript-húrok készítését.

Nem csak pontos karakterekre korlátozódik, hanem mintákra és egyszerre több helyettesítésre. Ebben a cikkben néhány példán keresztül láthattuk, hogyan működnek együtt.

Üdv a RegEx-nek?