Eksempel på JavaScript Regex-match - Sådan bruges JS Replace på en streng

Udviklere har brugt teksteditorer i lang tid. Og som de fleste værktøjer har alle teksteditorer en funktion til fælles: find og erstat.

Hvis du har brugt find og erstat i et stykke tid, ved du måske, hvor nyttig denne funktion er. Men de fleste af os ved ikke, at dette værktøj er endnu mere kraftfuldt, end vi indser.

Det kan ikke kun erstatte almindelige strenge, men også mønstre. Disse mønstre er kendt som Regular Expressions .

Regulære udtryk findes i JavaScript og de fleste andre programmeringssprog. Regex (for kort) er et meget kraftfuldt værktøj, der hjælper dig med at finde enkle såvel som komplekse søgemønstre.

Strengsøgningsalgoritmer er også en vigtig gren af ​​datalogi. I denne artikel vil vi lære at bruge dette fantastiske værktøj i JavaScript.

Hvorfor regelmæssige udtryk?

Du forstår ikke den virkelige betydning af regulære udtryk, før du får et langt dokument og bliver bedt om at udtrække alle e-mails fra det.

Du kan gøre det manuelt, men der er en super hurtig metode, der kan gøre det for dig. De fleste moderne teksteditorer tillader Regex i deres Find-mulighed. Det betegnes normalt med .*.

Og det er ikke alt, hvad regex kan gøre - e-mails er kun et eksempel. Du kan søge i enhver type streng, der følger et mønster, for eksempel URL'er eller tekst mellem parenteser.

Regex kan også bruges til at validere bestemte typer mønstre, f.eks. Validering af e-mail. Du kunne erstatte en lang valideringslogik som denne:

function IsValidEmail(email) { if (email.length <= 2) { return false; } if (email.indexOf("@") == -1) { return false; } var parts = email.split("@"); var dot = parts[1].indexOf("."); var len = parts[1].length; var dotSplits = parts[1].split("."); var dotCount = dotSplits.length - 1; if (dot == -1 || dot  2) { return false; } for (var i = 0; i < dotSplits.length; i++) { if (dotSplits[i].length == 0) { return false; } } return true; };

Med en enkelt linje som denne:

function isValidEmail(email) { return /^(([^()\[\]\\.,;:\[email protected]"]+(\.[^()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email); }

Selvom det regulære udtryk ser skræmmende ud, er det ikke noget, du skal huske. Når du først har forstået, hvordan det fungerer, vil det være superenkelt at implementere.

JavaScript Regex-match

I JavaScript har vi en matchningsmetode til strenge. Denne metode kan bruges til at matche Regex i en streng.

Denne metode er den samme som find-metoden i teksteditorer. Den søger i en given streng med en Regex og returnerer en matrix med alle matches. Prototypen for matchmetoden er som følger:

str.match(regexp)

Dette returnerer en matrix med alle matches i søgestrengen ( str) for regulært udtryk ( regexp).

En grundlæggende anvendelse af denne metode ville være at tælle alle ord i en streng. For eksempel:

var str = "This is a test string"; var matchArr = str.match(/\w+/g); console.log(matchArr.length); //prints 5

Vi lærer om dette \w+regulære udtryk senere i denne artikel.

Ved hjælp af sådanne regulære udtryk kan vi udføre forskellige opgaver, som ellers ville kræve, at vi skrev kedelig logik. Et eksempel var e-mail-valideringsfunktionen. Vi er nødt til at teste alle kriterier, men ved hjælp af regex kan du forenkle det.

Regulære udtryk er gyldige i de fleste strengfunktioner, men du skal kontrollere prototypen for funktionen, hvis du vil være sikker. En sådan metode er Erstat-metoden. Lad os lære mere om det nedenfor.

JavaScript-erstatningsmetode

JavaScript har en række strengværktøjsfunktioner. Erstat er en af ​​dem. Prototypen på erstatningsmetoden er som følger:

const newStr = str.replace(regexp|substr, newSubstr|function)

Som du kan se, fungerer erstatningsmetoden på en streng og returnerer en streng. Det tager to parametre: strengen, der skal udskiftes, og med hvad den skal udskiftes.

Den første parameter kan være enten en streng eller et regulært udtryk. Her kan vi bruge kraften fra regulære udtryk til at erstatte komplekse søgemønstre med en streng.

Den anden parameter kan også være en funktion. Lad os tjekke et eksempel for at demonstrere det:

var str = "This is a test string"; var newStr = str.replace(/\w+/g, function(match) { return match.split("").reverse().join(""); }); console.log(newStr); //prints "sihT si a tset gnirts"

Dette eksempel vender hvert ord i en streng. Så som du kan se, er erstatte kombineret med regex et meget kraftfuldt værktøj i JavaScript.

Udskiftningsmetoden kan være nyttig, hvis du vil erstatte et specifikt søgemønster med en anden streng efter nogen behandling af den originale streng.

Det kan også bruges til at rette et ugyldigt match - for eksempel til at validere e-mail og om muligt til at rette ugyldig e-mail.

Nu hvor vi ved, hvor nyttigt Regex er, lad os lære nogle grundlæggende regulære udtryk og søge efter strenge.

Grundlæggende regulære udtryk

Selvom regulære udtryk er et stort emne, er de grundlæggende meget enkle at forstå og huske. Lad os prøve at forstå nogle grundlæggende udtryk forbundet med regulære udtryk.

Bogstaver

En bogstavelig er enhver karakter, der vurderes som sig selv og ikke i nogen generel form. Således worder også et gyldigt regulært udtryk, der kun matcher "ord" .

Hvis du vil erstatte alle forekomster af et givet ord i JavaScript, kan du gøre dette:

var str = "JavaScript is a very popular programming language. javascript is used in web developement. javascript is very easy to learn."; var newStr = str.replace(/javascript/gi,"js"); console.log(newStr); /* prints "js is a very popular programming language. js is used in web developement. js is very easy to learn." */

Dette erstatter alle forekomster af JavaScript med JS. Vi opnåede dette ved hjælp af gidentifikatoren, der står for global søgning. Det vil sige, det søger i alle forekomster snarere end blot den første.

Der er også en iidentifikator. Det står for sag-ufølsom søgning. Det matcher strengen, der ignorerer sagen.

En bogstavelig kan således bruges til at matche en bestemt karakter eller gruppe af tegn.

Metakarakterer

Et metategn bruges til generisk søgning, f.eks. Til at søge på ethvert ciffer, ethvert tegn eller et alfanumerisk tegn. Dette er nogle almindelige metakarakterer:

  • \d matcher ethvert ciffer, dvs. cifre fra 0 til 9
  • \w matcher ethvert alfanumerisk tegn, dvs. alfabeter az, AZ og cifre 0-9.
  • \s matcher ethvert hvidt mellemrum

Tilsvarende \D, \Wog \Stil nogen ikke-cifret, ikke-alfanumeriske og ikke-blanktegn hhv. F.eks. \d\d\dVille matche tre cifre i træk.

Kvantifikatorer

En kvantificering bruges til at kvantificere enhver bogstavelig eller metakarakteristisk karakter. Det kan bruges til at vælge flere forekomster af et givet tegn. Der er fire typer kvantificeringsmidler defineret i regex:

  • * bruges til at matche 0 eller flere forekomster af en given karakter.
  • + bruges til at matche 1 eller flere forekomster af en given karakter.
  • . bruges til at matche enten ingen forekomst eller 1 forekomst af et givet tegn.
  • {min,max}eller {n}kan bruges til at matche et antal forekomster i et interval eller et givet antal gange n

Et eksempel er det, vi brugte ovenfor til at vende om hvert ord i en streng.

  • \w+ matcher hvert ord i en streng
  • \w matcher ethvert alfanumerisk tegn
  • \w+ matcher en eller flere forekomster af et alfanumerisk tegn, det vil sige hvert ord i en streng.

We could also use quantifiers to replace multiple whitespaces with a single whitespace. For example:

var str = "This is a string with multiple whitespaces"; var newStr = str.replace(/\s\s+/g, " "); console.log(newStr); //prints "This is a string with multiple whitespaces"

There are plenty of other uses for quantifiers.

Position meta-characters

There are also position meta-characters which represent a position. For example ^ represents the start of a line, $ represents end of a line, and \b represents word boundaries.

Conclusion

In this article, we learned how important regular expressions are. We also saw how they can be used for searching simple as well as complex search patterns.

This has great potential in programming with text. String-matching algorithms are used in DNA matching and form a significant branch of computer science.

Når du mestrer regex, kan du bruge det med JavaScript's match og udskiftningsmetoder til at forenkle lange programmer og bruge det til validering af bestemte mønstre. Regex kan også hjælpe med at forkorte lange programmer og gøre dem mere forståelige.

Nu kan du bruge din egen kreativitet og lave vidunderlig regex - så held og lykke med din nye dygtighed.

Dette var en meget grundlæggende oversigt over regulære udtryk. Hvis du vil mestre regex-kunsten, foreslår jeg dig at tjekke Daniel Shiffmans vejledning her.

Hej, jeg håber du elskede denne artikel og lærte noget . Du kan finde mig på mit internethjem, theabbie.github.io eller min Github. Tjek mine andre artikler. Tak skal du have.