Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Reguljära uttryck, populärt kända som "regex" eller "regexp", är strängar som beskriver ett sökmönster. Du kan använda reguljära uttryck för att kontrollera om en sträng innehåller ett specifikt mönster, extrahera information från en sträng och ersätta delar av en sträng med ny text.

Lär dig den grundläggande syntaxen för reguljära uttryck och hur du använder dem i JavaScript.

Grundsyntaxen för reguljära uttryck

Det finns två sätt att skapa ett reguljärt uttryck i JavaScript: att använda ett bokstavligt reguljärt uttryck och att använda RegExp konstruktör.

En bokstavlig form av reguljärt uttryck består av ett mönster inneslutet mellan snedstreck, följt av en valfri flagga.

Till exempel:

// Utan flagga
konst regexExpression_1 = /pattern/

// Med flagga
konst regexExpression_2 = /pattern/flagga

En flagga är en valfri parameter som du kan lägga till i ett reguljärt uttryck för att ändra dess beteende. Till exempel:

instagram viewer
konst regexFlagga = /the/g;

De g flaggan anger att uttrycket ska matcha alla förekomster, inte bara det första.

Du kan också skapa ett reguljärt uttryck med hjälp av RegExp konstruktör. Till exempel:

konst regexExpression = nyRegExp("Mönster", "g");

De RegExp konstruktorn tar två parametrar: ett mönster - en sträng eller ett reguljärt uttryck - och en flagga.

Det finns två ganska vanliga flaggor du kommer att använda med reguljärt uttryck i JavaScript:

  • g: Den globala flaggan gör att det reguljära uttrycket matchar alla mönstrets förekomster i den givna strängen istället för en enda förekomst.
  • i: Den skiftlägesokänsliga flaggan gör att det reguljära uttrycket bortser från skiftläge i mönstret och matchar versaler och gemener i den givna strängen.

Du kan använda flaggor tillsammans i ett enda uttryck i valfri ordning. Till exempel:

konst regexExpression = nyRegExp("Mönster", "gi");

Detta uttryck kommer att matcha alla förekomster av "mönster", oavsett fall.

I reguljära uttryck har vissa tecken, så kallade metatecken, speciella betydelser. Du kan använda dem för att matcha specifika typer av tecken eller mönster.

Här är några av de mest använda metakaraktärerna och deras betydelser:

  • Jokertecken (.): Det här tecknet matchar alla enstaka tecken förutom en ny rad. Det är ett användbart verktyg för att matcha mönster med okända tecken.
  • The Kleene Star (*): Detta tecken matchar noll eller fler förekomster av föregående tecken eller grupp. Det tillåter att föregående tecken eller grupp visas hur många gånger som helst i strängen, inklusive noll.
  • Den valfria karaktären (?): Detta tecken matchar noll eller en förekomst av ett föregående tecken eller grupp.
  • Start av linjeankare (^): Det här tecknet matchar bara början av en rad eller sträng.
  • End of Line Anchor ($): Det här tecknet matchar slutet av en rad eller sträng.
  • Teckenuppsättning/klass ([]): En teckenuppsättning matchar alla tecken från en uppsättning tecken i en sträng. Du definierar dem med hakparenteser [] och du kan ange en uppsättning fasta tecken, specialtecken eller vissa grupper av tecken.
  • Alternerande karaktär (|): Detta tecken matchar föregående eller följande tecken eller grupp. Det fungerar på samma sätt som operationsenheten JavaScript-operatör.
  • Grupperingstecken (()): Grupperingstecknet låter dig gruppera tecken eller underuttryck, tillämpa operatorer på dem som en enhet och styra operationsordningen.

Testa en sträng mot ett reguljärt uttryck i JavaScript

I JavaScript kan du testa en sträng mot ett reguljärt uttryck med flera metoder.

Det här avsnittet förutsätter att du har en grundläggande förståelse för reguljära uttryck och mönster. Om du är obekväm med reguljära uttryck, kolla in en nybörjarguide till reguljära uttryck först.

Testmetoden

De .testa() metod returnerar en boolean som indikerar om det reguljära uttrycket matchar strängen eller inte. Denna metod tar en sträng för att utföra sökningen på som ett argument. Det är särskilt användbart för enkla kontroller.

Till exempel:

låta regex = /.com$/;
låta str = "exempel.com";
trösta.log (regex.test (str)); // Sann

Detta reguljära uttryck matchar en sträng som slutar med ".com".

Exec-metoden

De .exec() metod returnerar en array som innehåller den matchade texten och eventuella infångade grupper eller null om den inte hittar en matchning. Denna metod tar en sträng för att utföra sökningen på som ett argument. Det är användbart för mer komplexa reguljära uttryck.

Till exempel:

låta regex = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
låta str = "123-456-7890";
låta resultat = regex.exec (str);

om (resultat !== null) {
trösta.logga(`${resultat[0]} är ett giltigt telefonnummer`);
} annan {
trösta.logga("Ogiltigt telefonnummer");
}

Det reguljära uttrycket ovan matchar en sträng som börjar med en valfri "(", tre siffror och en valfri ")". Den letar sedan efter en valfri "-", ".", eller mellanslag, följt av tre siffror. Den letar äntligen efter en valfri "-", ".", eller mellanslag följt av fyra siffror i slutet av strängen.

Detta reguljära uttryck matchar telefonnummer i formatet "(xxx) xxx-xxxx", "xxx-xxx-xxxx", "xxx.xxx.xxxx" eller "xxx xxx xxxx".

Om den hittar en matchning, .exec() returnerar en array som innehåller den matchade texten och eventuella infångade grupper (definierade av parenteser). Den kommer att inkludera varje grupp som ett extra element i den array som den returnerar. Detta låter dig komma åt specifika delar av den matchade texten, vilket kan hjälpa dig att extrahera information från en sträng.

Ersättningsmetoden

De .byta ut() metoden söker efter en matchning mellan ett reguljärt uttryck och en sträng och ersätter den matchade texten med en specificerad ersättningstext. Detta är en metod för strängobjekt, och den tar ett reguljärt uttryck och en ersättningssträng som argument.

Till exempel:

låta sträng = "Den kvicka bruna räven hoppar över den lata hunden.";
låta uttryck = /The/gi;
låta newString = string.replace (uttryck, "a");
trösta.log (newString); // "en snabb brun räv hoppar över en lat hund."

Detta exempel kallar byta ut() metod på sträng variabel, som skickar det reguljära uttrycket, uttryck. Det reguljära uttrycket matchar alla förekomster av "The" i strängen, oavsett skiftläge. Anropet till ersätt-metoden instruerar den att ersätta varje förekomst med strängen "a".

Prestandaöverväganden när du använder reguljära uttryck

Även om reguljära uttryck hjälper till att matcha och manipulera strängar, kan de också vara kostsamma när det gäller prestanda. Att göra mönster så specifika som möjligt och hålla dem enkla är avgörande för att de ska fungera.