Reguliarūs posakiai, populiariai žinomi kaip „regex“ arba „regexp“, yra eilutės, apibūdinančios paieškos šabloną. Galite naudoti įprastus posakius, kad patikrintumėte, ar eilutėje yra konkretus šablonas, ištraukite informaciją iš eilutės ir pakeistumėte eilutės dalis nauju tekstu.
Sužinokite pagrindinę reguliariųjų posakių sintaksę ir kaip jas naudoti „JavaScript“.
Pagrindinė reguliariųjų reiškinių sintaksė
Yra du būdai, kaip sukurti reguliarųjį reiškinį „JavaScript“: naudojant reguliarųjį reiškinį literalą ir naudojant RegExp konstruktorius.
Reguliariosios išraiškos literalą sudaro šablonas, esantis tarp pasvirųjų brūkšnių, o po jo yra pasirenkama vėliavėlė.
Pavyzdžiui:
// Be vėliavos
konst reguliarioji išraiška_1 = /pattern/
// Su vėliava
konst reguliarioji išraiška_2 = /pattern/vėliava
Vėliava yra pasirenkamas parametras, kurį galite įtraukti į reguliarųjį posakį, kad pakeistumėte jo elgesį. Pavyzdžiui:
konst regexFlag = /the/g;
The g vėliavėlė rodo, kad išraiška turi atitikti visus atvejus, o ne tik pirmąjį.
Taip pat galite sukurti reguliariąją išraišką naudodami RegExp konstruktorius. Pavyzdžiui:
konst reguliarioji išraiška = naujasRegExp("Raštas", "g");
The RegExp konstruktorius ima du parametrus: šabloną – eilutę arba reguliariosios išraiškos literalą – ir vėliavėlę (-es).
Yra dvi gana dažnos vėliavėlės, kurias naudosite su įprastu reiškiniu „JavaScript“:
- g: Visuotinė vėliavėlė leidžia reguliariajai išraiškai suderinti visus šablono atvejus nurodytoje eilutėje, o ne vieną atvejį.
- i: Mažųjų ir mažųjų raidžių žyma priverčia reguliariąją išraišką nepaisyti šablono didžiųjų ir mažųjų raidžių ir suderinti didžiąsias ir mažąsias raides nurodytoje eilutėje.
Galite naudoti vėliavėles kartu vienoje išraiškoje bet kokia tvarka. Pavyzdžiui:
konst reguliarioji išraiška = naujasRegExp("Raštas", "gi");
Ši išraiška atitiks visus „Rašto“ atvejus, neatsižvelgiant į atvejį.
Įprastose išraiškose tam tikri simboliai, vadinami metasimboliais, turi specialias reikšmes. Galite juos naudoti norėdami suderinti konkrečius simbolių ar raštų tipus.
Štai keletas dažniausiai naudojamų metasimbolių ir jų reikšmės:
- Pakaitos simbolis (.): Šis simbolis atitinka bet kurį vieną simbolį, išskyrus naują eilutę. Tai naudingas įrankis suderinti modelius su nežinomais simboliais.
- Kleeno žvaigždė (*): Šis simbolis atitinka nulį ar daugiau ankstesnio simbolio ar grupės atvejų. Tai leidžia ankstesniam simboliui ar grupei eilutėje pasirodyti bet kokį skaičių kartų, įskaitant nulį.
- Pasirenkamasis simbolis (?): Šis simbolis atitinka nulį arba vieną ankstesnio simbolio ar grupės atvejį.
- Linijos pradžia inkaras (^): Šis simbolis atitinka tik eilutės ar eilutės pradžią.
- Linijos pabaigos inkaras ($): Šis simbolis atitinka eilutės arba eilutės pabaigą.
- Simbolių rinkinys/klasė ([]): simbolių rinkinys atitinka bet kurį simbolį iš simbolių rinkinio eilutėje. Galite juos apibrėžti naudodami laužtinius skliaustus [] ir galite nurodyti fiksuotų simbolių rinkinį, specialiuosius simbolius arba tam tikras simbolių grupes.
- Alternatyvus simbolis (|): Šis simbolis atitinka ankstesnį arba kitą simbolį ar grupę. Jis veikia panašiai kaip OR „JavaScript“ operatorius.
- Grupavimo simbolis (()): Grupavimo simbolis leidžia grupuoti simbolius arba posakius, taikyti jiems operatorius kaip vienetą ir valdyti operacijų tvarką.
„JavaScript“ eilutės tikrinimas prieš reguliariąją išraišką
„JavaScript“ galite patikrinti eilutę, palyginti su reguliaria išraiška, naudodami kelis metodus.
Šiame skyriuje daroma prielaida, kad turite pagrindinius reguliariųjų posakių ir modelių supratimą. Jei jums nepatinka reguliarūs posakiai, patikrinkite pradedančiųjų reguliarių posakių vadovas Pirmas.
Bandymo metodas
The .test() metodas grąžina loginį dydį, nurodantį, ar reguliarioji išraiška atitinka eilutę, ar ne. Šis metodas kaip argumentą naudoja eilutę paieškai atlikti. Tai ypač naudinga atliekant paprastus patikrinimus.
Pavyzdžiui:
leisti reguliarioji išraiška = /.com$/;
leisti str = "example.com";
konsolė.log (regex.test (str)); // tiesa
Ši reguliari išraiška atitinka eilutę, kuri baigiasi „.com“.
Vykdymo metodas
The .exec() metodas grąžina masyvą, kuriame yra suderintas tekstas ir visos užfiksuotos grupės arba nulinis jei neranda atitikmens. Šis metodas kaip argumentą naudoja eilutę paieškai atlikti. Tai naudinga sudėtingesnėms reguliariosioms išraiškoms.
Pavyzdžiui:
leisti reguliarioji išraiška = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
leisti str = "123-456-7890";
leisti rezultatas = regex.exec (str);
jeigu (rezultatas !== nulinis) {
konsolė.log(`${result[0]} yra galiojantis telefono numeris“.);
} Kitas {
konsolė.log("Neteisingas telefono numeris");
}
Aukščiau pateikta reguliarioji išraiška atitinka eilutę, kuri prasideda pasirenkama "(", trys skaitmenys ir neprivaloma")". Tada jis ieško neprivalomo "-", ".“ arba tarpas, po kurio rašomi trys skaitmenys. Pagaliau jis ieško neprivalomo "-", ".“ arba tarpas, po kurio yra keturi skaitmenys eilutės pabaigoje.
Ši reguliari išraiška atitinka telefono numerius formatu „(xxx) xxx-xxxx“, „xxx-xxx-xxxx“, „xxx.xxx.xxxx“ arba „xxx xxx xxxx“.
Jei randa atitikmenį, .exec() grąžina masyvą, kuriame yra suderintas tekstas ir visos užfiksuotos grupės (nubrėžtos skliausteliuose). Kiekviena grupė bus įtraukta kaip papildomas elementas masyve, kurį ji grąžina. Tai leidžia pasiekti konkrečias atitikusio teksto dalis, o tai gali padėti ištraukti informaciją iš eilutės.
Pakeitimo metodas
The .replace() metodas ieško atitikimo tarp reguliaraus reiškinio ir eilutės ir pakeičia atitikusį tekstą nurodytu pakaitiniu tekstu. Tai yra objektų eilutės metodas, kuris kaip argumentus naudoja reguliariąją išraišką ir pakaitinę eilutę.
Pavyzdžiui:
leisti eilutė = „Greita rudoji lapė peršoka per tinginį šunį“.;
leisti išraiška = /The/gi;
leisti newString = string.replace (išraiška, "a");
konsolė.log (naujaEilutė); // "greita ruda lapė peršoka per tinginį šunį".
Šis pavyzdys vadina pakeisti () metodas ant styga kintamasis, perduodantis reguliariąją išraišką, išraiška. Reguliarioji išraiška atitiks visus „The“ atvejus eilutėje, neatsižvelgiant į didžiąsias ir mažąsias raides. Iškvietimas pakeisti metodą nurodo kiekvieną atvejį pakeisti eilute „a“.
Našumo aspektai naudojant reguliariąsias išraiškas
Nors įprastos išraiškos padeda suderinti ir manipuliuoti eilutes, jos taip pat gali būti brangios našumo požiūriu. Labai svarbu, kad modeliai būtų kuo konkretesni ir paprasti, kad jie veiktų.