Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Regelmessige uttrykk, populært kjent som "regex" eller "regexp", er strenger som beskriver et søkemønster. Du kan bruke regulære uttrykk for å sjekke om en streng inneholder et spesifikt mønster, trekke ut informasjon fra en streng og erstatte deler av en streng med ny tekst.

Lær den grunnleggende syntaksen for regulære uttrykk og hvordan du bruker dem i JavaScript.

Grunnsyntaksen for regulære uttrykk

Det er to måter du kan lage et regulært uttrykk i JavaScript: ved å bruke et bokstavelig regulært uttrykk og ved å bruke RegExp konstruktør.

Et regulært uttrykk bokstavelig består av et mønster omsluttet mellom skråstreker, etterfulgt av et valgfritt flagg.

For eksempel:

// Uten flagg
konst regexExpression_1 = /pattern/

// Med flagg
konst regexExpression_2 = /pattern/flagg

Et flagg er en valgfri parameter som du kan legge til i et regulært uttrykk for å endre oppførselen. For eksempel:

instagram viewer
konst regexFlag = /the/g;

De g flagget indikerer at uttrykket skal samsvare med alle forekomster, ikke bare den første.

Du kan også lage et regulært uttrykk ved å bruke RegExp konstruktør. For eksempel:

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

De RegExp konstruktør tar to parametere: et mønster – en streng eller et regulært uttrykk – og et flagg(er).

Det er to ganske vanlige flagg du vil bruke med regulære uttrykk i JavaScript:

  • g: Det globale flagget gjør at det regulære uttrykket samsvarer med alle mønsterets forekomster i den gitte strengen i stedet for en enkelt forekomst.
  • Jeg: Flagget som ikke skiller mellom store og små bokstaver får det regulære uttrykket til å se bort fra store og små bokstaver i mønsteret og matche store og små bokstaver i den gitte strengen.

Du kan bruke flagg sammen i et enkelt uttrykk i hvilken som helst rekkefølge. For eksempel:

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

Dette uttrykket vil samsvare med alle forekomster av "mønster", uavhengig av tilfelle.

I vanlige uttrykk har visse tegn, kjent som metategn, spesielle betydninger. Du kan bruke dem til å matche bestemte typer tegn eller mønstre.

Her er noen av de mest brukte metategnene og deres betydning:

  • Jokertegn (.): Dette tegnet samsvarer med ethvert enkelt tegn bortsett fra en ny linje. Det er et nyttig verktøy for å matche mønstre med ukjente tegn.
  • The Kleene Star (*): Dette tegnet samsvarer med null eller flere forekomster av det foregående tegnet eller gruppen. Den lar det foregående tegnet eller gruppen vises et hvilket som helst antall ganger i strengen, inkludert null.
  • Den valgfrie karakteren (?): Dette tegnet samsvarer med null eller én forekomst av et foregående tegn eller gruppe.
  • Start av linjeanker (^): Dette tegnet samsvarer bare med begynnelsen av en linje eller streng.
  • End of Line Anchor ($): Dette tegnet samsvarer med slutten av en linje eller streng.
  • Tegnsett/klasse ([]): Et tegnsett samsvarer med ethvert tegn fra et sett med tegn i en streng. Du definerer dem ved hjelp av firkantede parenteser [] og du kan spesifisere et sett med faste tegn, spesialtegn eller bestemte grupper av tegn.
  • Alterneringstegn (|): Dette tegnet samsvarer med forrige eller følgende tegn eller gruppe. Det fungerer på samme måte som OR JavaScript-operatør.
  • Grupperingstegn (()): Grupperingstegnet lar deg gruppere tegn eller underuttrykk, bruke operatorer på dem som en enhet og kontrollere rekkefølgen av operasjoner.

Testing av en streng mot et regulært uttrykk i JavaScript

I JavaScript kan du teste en streng mot et regulært uttrykk ved hjelp av flere metoder.

Denne delen forutsetter at du har en grunnleggende forståelse av regulære uttrykk og mønstre. Hvis du er ukomfortabel med regulære uttrykk, sjekk ut en nybegynnerguide til regulære uttrykk først.

Testmetoden

De .test() metoden returnerer en boolsk verdi som indikerer om det regulære uttrykket samsvarer med strengen eller ikke. Denne metoden tar en streng for å utføre søket som et argument. Det er spesielt nyttig for enkle kontroller.

For eksempel:

la regex = /.com$/;
la str = "example.com";
konsoll.log (regex.test (str)); // sant

Dette regulære uttrykket samsvarer med en streng som slutter med ".com".

Exec-metoden

De .exec() metoden returnerer en matrise som inneholder den matchede teksten og eventuelle fangede grupper eller null hvis den ikke finner en match. Denne metoden tar en streng for å utføre søket som et argument. Det er nyttig for mer komplekse regulære uttrykk.

For eksempel:

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

hvis (resultat !== null) {
konsoll.Logg(`${result[0]} er et gyldig telefonnummer`);
} ellers {
konsoll.Logg("Ugyldig telefonnummer");
}

Det regulære uttrykket ovenfor samsvarer med en streng som starter med en valgfri "(", tre sifre og en valgfri ")". Den ser deretter etter en valgfri "-", ".", eller mellomrom, etterfulgt av tre sifre. Den ser endelig etter en valgfri "-", ".", eller mellomrom etterfulgt av fire sifre på slutten av strengen.

Dette regulære uttrykket samsvarer med telefonnumre i formatet "(xxx) xxx-xxxx", "xxx-xxx-xxxx", "xxx.xxx.xxxx" eller "xxx xxx xxxx".

Hvis den finner en match, .exec() returnerer en matrise som inneholder den samsvarende teksten og eventuelle fangede grupper (definert av parenteser). Den vil inkludere hver gruppe som et ekstra element i matrisen den returnerer. Dette lar deg få tilgang til bestemte deler av den samsvarende teksten, som kan hjelpe deg med å trekke ut informasjon fra en streng.

Erstatningsmetoden

De .erstatte() metoden søker etter et samsvar mellom et regulært uttrykk og en streng og erstatter den samsvarende teksten med en spesifisert erstatningstekst. Dette er en metode for strengobjekter, og den tar et regulært uttrykk og en erstatningsstreng som argumenter.

For eksempel:

la streng = "Den raske brunreven hopper over den late hunden.";
la uttrykk = /The/gi;
la newString = string.replace (uttrykk, "en");
konsoll.log (nystreng); // "en rask brun rev hopper over en lat hund."

Dette eksemplet kaller erstatte() metode på streng variabel, passerer det regulære uttrykket, uttrykk. Det regulære uttrykket vil samsvare med alle forekomster av "The" i strengen, uavhengig av tilfellet. Kallet til erstatningsmetoden instruerer den om å erstatte hver forekomst med strengen "a".

Ytelseshensyn ved bruk av regulære uttrykk

Selv om regulære uttrykk hjelper til med å matche og manipulere strenger, kan de også være kostbare når det gjelder ytelse. Å gjøre mønstre så spesifikke som mulig og holde dem enkle er avgjørende for å holde dem ytende.