Regulaaravaldised, mida rahvasuus nimetatakse regexiks või regexiks, on stringid, mis kirjeldavad otsingumustrit. Regulaaravaldiste abil saate kontrollida, kas string sisaldab kindlat mustrit, eraldada stringist teavet ja asendada stringi osad uue tekstiga.
Õppige regulaaravaldiste põhisüntaksit ja nende kasutamist JavaScriptis.
Regulaaravaldiste põhisüntaks
JavaScriptis regulaaravaldise loomiseks on kaks võimalust: kasutades regulaaravaldist literaali ja kasutades RegExp konstruktor.
Regulaaravaldise literaal koosneb kaldkriipsude vahele jäävast mustrist, millele järgneb valikuline lipp.
Näiteks:
// Ilma liputa
konst regexpression_1 = /pattern/
// Lipuga
konst regexpression_2 = /pattern/lipp
Lipp on valikuline parameeter, mille saate regulaaravaldisele selle käitumise muutmiseks lisada. Näiteks:
konst regexLipp = /the/g;
The g lipp näitab, et avaldis peaks vastama kõikidele esinemistele, mitte ainult esimesele.
Regulaaravaldise saate luua ka kasutades RegExp konstruktor. Näiteks:
konst regexpression = uusRegExp("Muster", "g");
The RegExp konstruktor võtab kaks parameetrit: muster – string või regulaaravaldise literaal – ja lipp (lipp).
JavaScriptis regulaaravaldisega kasutate kahte üsna levinud lippu:
- g: globaalne lipp paneb regulaaravaldise ühtima kõigi antud stringis esinevate mustritega, mitte ühe esinemisega.
- i: tõstutundlik lipp paneb regulaaravaldise eirama mustri suur- ja väiketähti ning sobitama antud stringi suur- ja väiketähti.
Saate kasutada lippe koos ühes avaldises mis tahes järjekorras. Näiteks:
konst regexpression = uusRegExp("Muster", "gi");
See avaldis sobib kõikide „mustri“ esinemisjuhtudega, olenemata sellest.
Regulaaravaldistes on teatud tähemärkidel, mida nimetatakse metamärkideks, eritähendused. Saate neid kasutada teatud tüüpi märkide või mustrite sobitamiseks.
Siin on mõned kõige sagedamini kasutatavad metamärgid ja nende tähendused:
- metamärk (.): See märk sobib iga üksiku märgiga, välja arvatud uuel real. See on kasulik tööriist mustrite sobitamiseks tundmatute tähemärkidega.
- Kleene täht (*): see märk vastab nullile või enamale eelneva märgi või rühma esinemissagedusele. See võimaldab eelneval märgil või rühmal esineda stringis mis tahes arv kordi, sealhulgas null.
- Valikuline märk (?): see märk vastab nullile või ühele eelneva märgi või rühma esinemisele.
- Joone algus ankur (^): See märk sobib ainult rea või stringi algusega.
- Rea lõpu ankur ($): See märk vastab rea või stringi lõpule.
- Märkide komplekt/klass ([]): märgistik vastab mis tahes tähemärgile stringi märgikomplektist. Saate need määratleda nurksulgude abil [] ja saate määrata fikseeritud märkide, erimärkide või teatud märgirühmade komplekti.
- Alternatiivne märk (|): See märk vastab eelmisele või järgmisele märgile või rühmale. See toimib sarnaselt OR-ga JavaScripti operaator.
- Rühmitav märk (()): rühmitusmärk võimaldab rühmitada märke või alamväljendeid, rakendada neile tehteid ühikuna ja juhtida toimingute järjekorda.
Stringi testimine JavaScripti regulaaravaldise suhtes
JavaScriptis saate testida stringi regulaaravaldise suhtes, kasutades mitut meetodit.
See jaotis eeldab, et teil on põhiteadmised regulaaravaldistest ja mustritest. Kui teile regulaaravaldised ei sobi, vaadake regulaaravaldiste juhend algajatele esiteks.
Testimise meetod
The .test() meetod tagastab tõeväärtuse, mis näitab, kas regulaaravaldis vastab stringile või mitte. See meetod võtab argumendina otsingu tegemiseks stringi. See on eriti kasulik lihtsate kontrollide jaoks.
Näiteks:
lase regex = /.com$/;
lase str = "example.com";
konsool.log (regex.test (str)); // tõsi
See regulaaravaldis vastab stringile, mis lõpeb tähega ".com".
Täitmise meetod
The .exec() meetod tagastab massiivi, mis sisaldab sobitatud teksti ja mis tahes hõivatud rühmi või null kui see vastet ei leia. See meetod võtab argumendina otsingu tegemiseks stringi. See on kasulik keerukamate regulaaravaldiste jaoks.
Näiteks:
lase regex = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
lase str = "123-456-7890";
lase tulemus = regex.exec (str);
kui (tulemus !== null) {
konsool.log(`${tulemus[0]} on kehtiv telefoninumber".);
} muidu {
konsool.log("Vale telefoninumber");
}
Ülaltoodud regulaaravaldis vastab stringile, mis algab valikulise "(", kolm numbrit ja valikuline ")". Seejärel otsib see valikulist "-", "." või tühik, millele järgneb kolm numbrit. Lõpuks otsib see valikulist "-", "." või tühik, millele järgneb neli numbrit stringi lõpus.
See regulaaravaldis vastab telefoninumbritele vormingus "(xxx) xxx-xxxx", "xxx-xxx-xxxx", "xxx.xxx.xxxx" või "xxx xxx xxxx".
Kui see leiab vaste, .exec() tagastab massiivi, mis sisaldab sobitatud teksti ja kõiki hõivatud rühmi (määratletud sulgudega). See sisaldab iga rühma lisaelemendina tagastatavas massiivis. See võimaldab teil pääseda juurde sobitatud teksti teatud osadele, mis aitab teil stringist teavet eraldada.
Asendusmeetod
The .replace() meetod otsib vastet regulaaravaldise ja stringi vahel ning asendab sobitatud teksti määratud asendustekstiga. See on stringiobjektide meetod ja see võtab argumentidena regulaaravaldise ja asendusstringi.
Näiteks:
lase string = "Kiire pruunrebane hüppab üle laisa koera.";
lase väljend = /The/gi;
lase newString = string.replace (avaldis, "a");
konsool.log (uusString); // "kiire pruunrebane hüppab üle laisa koera."
See näide nimetab asenda () meetodil string muutuja, mis edastab regulaaravaldise, väljendus. Regulaaravaldis ühtib kõigi "The" esinemistega stringis, olenemata suur- ja suurtähtedest. Asendusmeetodi väljakutse juhendab seda asendama iga esinemise stringiga "a".
Toimivuskaalutlused regulaaravaldiste kasutamisel
Kuigi regulaaravaldised aitavad stringe sobitada ja nendega manipuleerida, võivad need olla ka jõudluse seisukohalt kulukad. Mustrite muutmine võimalikult spetsiifiliseks ja lihtsaks muutmine on nende jõudluse säilitamiseks ülioluline.