JavaScript String.Replace () Пример с RegEx

Регулярните изрази (наричани още RegEx или RegExp) са мощен начин за анализ на текст. С RegEx можете да съпоставяте низове в точки, които съответстват на конкретни символи (например JavaScript) или модели (например NumberStringSymbol - 3a &).

В .replaceметода се използва на низове в JavaScript, за да замени част от низ с букви. Често се използва така:

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

Както можете да видите по-горе, методът replace приема два аргумента: низът, който трябва да бъде заменен, и това, с което низът ще бъде заменен.

Тук идва Regex .

Използването на .replaceгорното е ограничено: знаците, които трябва да бъдат заменени, са известни - "ava". Ами ако вместо това се занимаваме с модел? Може би, число, две букви и думата "foo" или три символа, използвани заедно?

Използваният .replaceметод RegExможе да постигне това. RegExможе ефективно да се използва за пресъздаване на модели. Така че, комбинирайки това със .replaceсредства, можем да заменим шаблони, а не само точни символи.

Как да използвам RegExс .replaceв JavaScript

За да използвате RegEx, първият аргумент на например replaceще бъде заменен със синтаксис на регулярни изрази /regex/. Този синтаксис служи като модел, при който всички части от низа, които съответстват на него, ще бъдат заменени с новия подниз.

Ето пример:

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

Низът 3foobar4съответства на регулярния израз /\d.*\d/, така че е заменен.

Ами ако искаме да извършим подмяна на няколко места?

Regexвече предлага това с g(глобален) флаг и същото може да се използва с replace. Ето как:

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

Регулярният израз съответства на части от низа, които са точно 3 последователни числа. 323съвпада с него, 995съвпада с него, 489съвпада и 454го съвпада. Но последното 5не съвпада с модела.

Резултатът е, че JavaScrip5tпоказва как шаблоните са правилно съчетани и замества с новия подниз (празен низ).

Флагът на делото - iсъщо може да се използва. Това означава, че можете да замените нечувствителните към регистъра модели. Ето как се използва:

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..не съответства на първия синтаксис, защото RegEx по подразбиране е чувствителен към малки и големи букви. Но с използването на iфлага, както се вижда във втория синтаксис, низът е както се очаква - заменен.

Как да използвам разделянето с регулярни изрази

splitсъщо използва RegEx. Което означава, че можете да разделите низ не само на поднизовете, които съответстват точно на символите, но и на шаблоните.

Ето един бърз поглед:

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

Низът беше splitв, 64aзащото този подниз съответства на посочения регулярен израз.

Обърнете внимание, че глобалният флаг - g- splitе без значение, за разлика от iфлага и други знамена. Това е така, защото splitразделя низа в няколко точки, на които съответства регулярният израз.

Обобщавайки

RegExправи replaceнизовете в JavaScript по-ефективни, мощни и забавни.

Не сте ограничени само до точни символи, но модели и множество замествания едновременно. В тази статия видяхме как работят заедно, като използваме няколко примера.

Наздраве за RegEx?