Regulære udtryk, populært kendt som "regex" eller "regexp," er strenge, der beskriver et søgemønster. Du kan bruge regulære udtryk til at kontrollere, om en streng indeholder et bestemt mønster, udtrække information fra en streng og erstatte dele af en streng med ny tekst.
Lær den grundlæggende syntaks for regulære udtryk, og hvordan du bruger dem i JavaScript.
Den grundlæggende syntaks for regulære udtryk
Der er to måder, du kan oprette et regulært udtryk i JavaScript: ved at bruge et regulært udtryk bogstaveligt og ved at bruge RegExp konstruktør.
Et regulært udtryk består af et mønster, der er omsluttet mellem skråstreger, efterfulgt af et valgfrit flag.
For eksempel:
// Uden flag
konst regexExpression_1 = /pattern/
// Med flag
konst regexExpression_2 = /pattern/flag
Et flag er en valgfri parameter, som du kan tilføje til et regulært udtryk for at ændre dets adfærd. For eksempel:
konst regexFlag = /the/g;
Det g flag angiver, at udtrykket skal matche alle forekomster, ikke kun den første.
Du kan også oprette et regulært udtryk ved hjælp af RegExp konstruktør. For eksempel:
konst regexExpression = nyRegExp("Mønster", "g");
Det RegExp konstruktør tager to parametre: et mønster - en streng eller et regulært udtryk - og et flag.
Der er to ret almindelige flag, du vil bruge med regulært udtryk i JavaScript:
- g: Det globale flag får det regulære udtryk til at matche alle mønstrets forekomster i den givne streng i stedet for en enkelt forekomst.
- jeg: Det flag-ufølsomme flag får det regulære udtryk til at se bort fra store og små bogstaver i mønsteret og matche store og små bogstaver i den givne streng.
Du kan bruge flag sammen i et enkelt udtryk i vilkårlig rækkefølge. For eksempel:
konst regexExpression = nyRegExp("Mønster", "gi");
Dette udtryk vil matche alle forekomster af "mønster", uanset tilfældet.
I regulære udtryk har visse tegn, kendt som metategn, særlige betydninger. Du kan bruge dem til at matche bestemte typer tegn eller mønstre.
Her er nogle af de mest brugte metategn og deres betydninger:
- Wildcard-karakteren (.): Dette tegn matcher ethvert enkelt tegn undtagen en ny linje. Det er et nyttigt værktøj til at matche mønstre med ukendte tegn.
- The Kleene Star (*): Dette tegn matcher nul eller flere forekomster af det foregående tegn eller gruppe. Det tillader det foregående tegn eller den foregående gruppe at blive vist et vilkårligt antal gange i strengen, inklusive nul.
- Det valgfrie tegn (?): Dette tegn matcher nul eller én forekomst af et foregående tegn eller gruppe.
- Start af lineanker (^): Dette tegn matcher kun begyndelsen af en linje eller streng.
- End of Line Anchor ($): Dette tegn matcher slutningen af en linje eller streng.
- Tegnsæt/klasse ([]): Et tegnsæt matcher ethvert tegn fra et sæt tegn i en streng. Du definerer dem ved hjælp af firkantede parenteser [] og du kan angive et sæt faste tegn, specialtegn eller bestemte grupper af tegn.
- Skiftetegn (|): Dette tegn matcher det foregående eller følgende tegn eller gruppe. Det fungerer på samme måde som operationsstuen JavaScript-operatør.
- Grupperingstegn (()): Grupperingstegnet giver dig mulighed for at gruppere tegn eller underudtryk, anvende operatorer på dem som en enhed og styre rækkefølgen af operationer.
Test af en streng mod et regulært udtryk i JavaScript
I JavaScript kan du teste en streng mod et regulært udtryk ved hjælp af flere metoder.
Dette afsnit forudsætter, at du har en grundlæggende forståelse af regulære udtryk og mønstre. Hvis du er utilpas med regulære udtryk, så tjek ud en begynderguide til regulære udtryk først.
Testmetoden
Det .prøve() metoden returnerer en boolesk værdi, der angiver, om det regulære udtryk matcher strengen eller ej. Denne metode tager en streng for at udføre søgningen på som et argument. Det er især nyttigt til simple kontroller.
For eksempel:
lade regex = /.com$/;
lade str = "eksempel.dk";
konsol.log (regex.test (str)); // rigtigt
Dette regulære udtryk matcher en streng, der slutter med ".com".
Exec-metoden
Det .exec() metoden returnerer et array, der indeholder den matchede tekst og eventuelle indfangede grupper eller nul hvis den ikke finder et match. Denne metode tager en streng for at udføre søgningen på som et argument. Det er nyttigt til mere komplekse regulære udtryk.
For eksempel:
lade regex = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
lade str = "123-456-7890";
lade resultat = regex.exec (str);
hvis (resultat !== nul) {
konsol.log(`${resultat[0]} er et gyldigt telefonnummer`);
} andet {
konsol.log("Ugyldigt telefonnummer");
}
Det regulære udtryk ovenfor matcher en streng, der starter med en valgfri "(", tre cifre og en valgfri ")". Den leder derefter efter en valgfri "-", ".", eller mellemrum, efterfulgt af tre cifre. Den leder endelig efter en valgfri "-", ".", eller mellemrum efterfulgt af fire cifre i slutningen af strengen.
Dette regulære udtryk matcher telefonnumre i formatet "(xxx) xxx-xxxx", "xxx-xxx-xxxx", "xxx.xxx.xxxx" eller "xxx xxx xxxx".
Hvis den finder et match, .exec() returnerer et array, der indeholder den matchede tekst og eventuelle indfangede grupper (defineret i parentes). Det vil inkludere hver gruppe som et ekstra element i det array, det returnerer. Dette giver dig adgang til bestemte dele af den matchede tekst, som kan hjælpe dig med at udtrække information fra en streng.
Erstatningsmetoden
Det .erstatte() metoden søger efter et match mellem et regulært udtryk og en streng og erstatter den matchede tekst med en specificeret erstatningstekst. Dette er en metode til strengobjekter, og den tager et regulært udtryk og en erstatningsstreng som argumenter.
For eksempel:
lade streng = "Den hurtige brune ræv hopper over den dovne hund.";
lade udtryk = /The/gi;
lade newString = string.replace (udtryk, "en");
konsol.log (nystreng); // "en hurtig brun ræv hopper over en doven hund."
Dette eksempel kalder erstatte() metode på snor variabel, der overfører det regulære udtryk, udtryk. Det regulære udtryk vil matche alle forekomster af "The" i strengen, uanset tilfældet. Kaldet til erstatningsmetoden instruerer den i at erstatte hver forekomst med strengen "a".
Overvejelser om ydeevne ved brug af regulære udtryk
Selvom regulære udtryk hjælper med at matche og manipulere strenge, kan de også være dyre med hensyn til ydeevne. At gøre mønstre så specifikke som muligt og holde dem enkle er afgørende for at holde dem performante.