A reguláris kifejezések, közismert nevén "regex" vagy "regexp", olyan karakterláncok, amelyek egy keresési mintát írnak le. Szabályos kifejezések segítségével ellenőrizheti, hogy egy karakterlánc tartalmaz-e meghatározott mintát, információt nyerhet ki egy karakterláncból, és a karakterlánc egyes részeit új szöveggel cserélheti ki.
Ismerje meg a reguláris kifejezések alapvető szintaxisát és a JavaScriptben való használatukat.
A reguláris kifejezések alapvető szintaxisa
Kétféleképpen hozhat létre reguláris kifejezést JavaScriptben: reguláris kifejezés literál és a RegExp konstruktőr.
A reguláris kifejezés literál egy perjelek közé zárt mintából áll, amelyet egy opcionális jelző követ.
Például:
// Zászló nélkül
const regexpression_1 = /pattern/
// Zászlóval
const regexpression_2 = /pattern/zászló
A zászló egy opcionális paraméter, amelyet hozzáadhat egy reguláris kifejezéshez, hogy módosítsa annak viselkedését. Például:
const regexFlag = /the/g;
A g A zászló azt jelzi, hogy a kifejezésnek minden előfordulással meg kell egyeznie, nem csak az elsővel.
A reguláris kifejezést a RegExp konstruktőr. Például:
const reguláris kifejezés = újRegExp("Minta", "g");
A RegExp A konstruktor két paramétert vesz fel: egy mintát – egy karakterláncot vagy egy reguláris kifejezés literált – és egy jelző(ke)t.
Két meglehetősen gyakori jelzőt használ a JavaScript reguláris kifejezéséhez:
- g: A globális jelző azt teszi, hogy a reguláris kifejezés az adott karakterlánc összes mintájához illeszkedjen egyetlen előfordulás helyett.
- én: A kis- és nagybetűket nem érzékeny jelző arra készteti a reguláris kifejezést, hogy figyelmen kívül hagyja a minta kis- és nagybetűit, és párosítsa a kis- és nagybetűket az adott karakterláncban.
A zászlókat egyetlen kifejezésben, bármilyen sorrendben együtt használhatja. Például:
const reguláris kifejezés = újRegExp("Minta", "GI");
Ez a kifejezés megfelel a „Minta” minden előfordulásának, az esettől függetlenül.
A reguláris kifejezésekben bizonyos karakterek, úgynevezett metakarakterek különleges jelentéssel bírnak. Használhatja őket bizonyos típusú karakterekhez vagy mintákhoz.
Íme néhány a leggyakrabban használt metakarakterek és jelentésük:
- A helyettesítő karakter (.): Ez a karakter bármelyik karakterrel megegyezik, kivéve egy új sort. Hasznos eszköz a minták és az ismeretlen karakterek párosítására.
- A Kleene csillag (*): Ez a karakter az előző karakter vagy csoport nulla vagy több előfordulásának felel meg. Lehetővé teszi, hogy az előző karakter vagy csoport tetszőleges számú alkalommal megjelenjen a karakterláncban, beleértve a nullát is.
- Az opcionális karakter (?): Ez a karakter egy megelőző karakter vagy csoport nullával vagy egy előfordulásával egyezik meg.
- Sor kezdete horgony (^): Ez a karakter csak egy sor vagy karakterlánc elejére egyezik.
- Sorvégi horgony ($): Ez a karakter egy sor vagy karakterlánc végére egyezik.
- Karakterkészlet/Osztály ([]): A karakterkészlet egy karaktersorozatban található karakterkészlet bármely karakterével megegyezik. Ezeket szögletes zárójelek segítségével határozhatja meg [] és megadhat rögzített karakterkészletet, speciális karaktereket vagy bizonyos karaktercsoportokat.
- Váltakozó karakter (|): Ez a karakter megegyezik az előző vagy a következő karakterrel vagy csoporttal. Hasonlóan működik, mint az OR JavaScript operátor.
- Csoportosító karakter (()): A csoportosító karakter lehetővé teszi karakterek vagy részkifejezések csoportosítását, operátorok egységként történő alkalmazását, és a műveletek sorrendjének szabályozását.
Karakterlánc tesztelése reguláris kifejezéssel szemben a JavaScriptben
A JavaScriptben többféle módszerrel tesztelhet egy karakterláncot egy reguláris kifejezéssel.
Ez a rész feltételezi, hogy rendelkezik alapvető ismeretekkel a reguláris kifejezésekről és mintákról. Ha kényelmetlen a reguláris kifejezések használata, nézze meg kezdőknek szóló útmutató a reguláris kifejezésekhez első.
A vizsgálati módszer
A .teszt() A metódus logikai értéket ad vissza, jelezve, hogy a reguláris kifejezés egyezik-e a karakterlánccal vagy sem. Ez a metódus egy karakterláncot vesz igénybe a kereséshez argumentumként. Különösen hasznos az egyszerű ellenőrzéseknél.
Például:
hagyja regex = /.com$/;
hagyja str = "example.com";
konzol.log (regex.test (str)); // igaz
Ez a reguláris kifejezés megegyezik egy „.com”-ra végződő karakterlánccal.
A végrehajtási módszer
A .exec() metódus egy tömböt ad vissza, amely tartalmazza az egyező szöveget és a rögzített csoportokat vagy nulla ha nem talál megfelelőt. Ez a metódus egy karakterláncot vesz igénybe a kereséshez argumentumként. Komplexebb reguláris kifejezéseknél hasznos.
Például:
hagyja regex = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
hagyja str = "123-456-7890";
hagyja eredmény = regex.exec (str);
ha (eredmény !== nulla) {
konzol.log(`${eredmény[0]} egy érvényes telefonszám".);
} más {
konzol.log("Érvénytelen telefonszám");
}
A fenti reguláris kifejezés megegyezik egy karakterlánccal, amely nem kötelező "" karakterrel kezdődik(", három számjegy és egy opcionális ")". Ezután keres egy opcionális "-", ".", vagy szóköz, amelyet három számjegy követ. Végre keres egy opcionális "-", ".", vagy szóköz, amelyet négy számjegy követ a karakterlánc végén.
Ez a reguláris kifejezés megfelel a „(xxx) xxx-xxxx”, „xxx-xxx-xxxx”, „xxx.xxx.xxxx” vagy „xxx xxx xxxx” formátumú telefonszámoknak.
Ha talál egyezést, .exec() egy tömböt ad vissza, amely tartalmazza az egyező szöveget és a rögzített csoportokat (zárójelben definiálva). Minden csoportot további elemként tartalmaz a visszaadott tömbben. Ez lehetővé teszi az egyező szöveg bizonyos részeihez való hozzáférést, ami segíthet információt kinyerni egy karakterláncból.
A csere módszer
A .replace() metódus egyezést keres egy reguláris kifejezés és egy karakterlánc között, és lecseréli az egyező szöveget egy megadott helyettesítő szövegre. Ez a karakterlánc objektumok módszere, és argumentumként egy reguláris kifejezést és egy helyettesítő karakterláncot vesz fel.
Például:
hagyja karakterlánc = – A gyors barna róka átugrik a lusta kutyán.;
hagyja kifejezés = /The/gi;
hagyja newString = string.replace (kifejezés, "a");
konzol.log (newString); // "egy gyors barna róka átugrik egy lusta kutyán."
Ez a példa a csere() módszer a húr változó, átadja a reguláris kifejezést, kifejezés. A reguláris kifejezés a karakterláncban szereplő „The” minden előfordulásával megegyezik, a kis- és nagybetűktől függetlenül. A csere metódus hívása arra utasítja, hogy minden előfordulást az „a” karakterláncra cseréljen.
Teljesítménnyel kapcsolatos szempontok reguláris kifejezések használatakor
Bár a reguláris kifejezések segítenek a karakterláncok egyeztetésében és kezelésében, a teljesítmény szempontjából költségesek is lehetnek. A minták lehető legspecifikusabbá tétele és egyszerűsége létfontosságú a teljesítményük megőrzéséhez.