Säännölliset lausekkeet, jotka tunnetaan yleisesti nimellä "regulex" tai "regexp", ovat merkkijonoja, jotka kuvaavat hakumallia. Säännöllisten lausekkeiden avulla voit tarkistaa, sisältääkö merkkijono tietyn kuvion, poimia tietoja merkkijonosta ja korvata merkkijonon osia uudella tekstillä.
Opi säännöllisten lausekkeiden perussyntaksi ja niiden käyttö JavaScriptissä.
Säännöllisten lausekkeiden perussyntaksi
Voit luoda säännöllisen lausekkeen JavaScriptissä kahdella tavalla: käyttämällä säännöllistä lauseketta literaalia ja käyttämällä RegExp rakentaja.
Säännöllisen lausekkeen literaali koostuu vinoviivojen väliin suljetusta kuviosta, jota seuraa valinnainen lippu.
Esimerkiksi:
// Ilman lippua
konst säännöllinen lauseke_1 = /pattern/
// Lipun kanssa
konst säännöllinen lauseke_2 = /pattern/lippu
Lippu on valinnainen parametri, jonka voit lisätä säännölliseen lausekkeeseen muuttaaksesi sen toimintaa. Esimerkiksi:
konst regexFlag = /the/g;
The g lippu osoittaa, että lausekkeen tulee vastata kaikkia esiintymiä, ei vain ensimmäistä.
Voit myös luoda säännöllisen lausekkeen käyttämällä RegExp rakentaja. Esimerkiksi:
konst säännöllinen lauseke = UusiRegExp("Kuvio", "g");
The RegExp konstruktori ottaa kaksi parametria: kuvion – merkkijonon tai säännöllisen lausekkeen literaalin – ja lipun (s).
JavaScriptin säännöllisen lausekkeen kanssa käytät kahta melko yleistä lippua:
- g: Yleinen lippu saa säännöllisen lausekkeen vastaamaan kaikkia kuvion esiintymiä annetussa merkkijonossa yhden esiintymän sijaan.
- i: Merkintä, jossa kirjainkoolla ei ole merkitystä, säännöllinen lauseke jättää huomioimatta kuvion kirjainkoon ja sovittaa isoja ja pieniä kirjaimia annetussa merkkijonossa.
Voit käyttää lippuja yhdessä yhdessä lausekkeessa missä tahansa järjestyksessä. Esimerkiksi:
konst säännöllinen lauseke = UusiRegExp("Kuvio", "gi");
Tämä lauseke vastaa kaikkia "Kuvion" esiintymiä tapauksesta riippumatta.
Säännöllisissä lausekkeissa tietyillä merkeillä, jotka tunnetaan nimellä metamerkit, on erityismerkitys. Voit käyttää niitä sovittamaan tietyntyyppisiä merkkejä tai kuvioita.
Tässä on joitain yleisimmin käytettyjä metamerkkejä ja niiden merkityksiä:
- Jokerimerkki (.): Tämä merkki vastaa mitä tahansa yksittäistä merkkiä uutta riviä lukuun ottamatta. Se on hyödyllinen työkalu kuvioiden yhdistämiseen tuntemattomien merkkien kanssa.
- Kleenen tähti (*): Tämä merkki vastaa nollaa tai useampaa edellisen merkin tai ryhmän esiintymää. Sen avulla edeltävä merkki tai ryhmä voi esiintyä merkkijonossa kuinka monta kertaa tahansa, mukaan lukien nolla.
- Valinnainen merkki (?): Tämä merkki vastaa nollaa tai yhtä edellisen merkin tai ryhmän esiintymää.
- Alkulinjan ankkuri (^): Tämä merkki vastaa vain rivin tai merkkijonon alkua.
- Linjan loppuankkuri ($): Tämä merkki vastaa rivin tai merkkijonon loppua.
- Merkistö/luokka ([]): Merkistö vastaa mitä tahansa merkkiä merkkijonon merkkijoukosta. Voit määrittää ne hakasulkeilla [] ja voit määrittää joukon kiinteitä merkkejä, erikoismerkkejä tai tiettyjä merkkiryhmiä.
- Vaihtoehtoinen merkki (|): Tämä merkki vastaa edellistä tai seuraavaa merkkiä tai ryhmää. Se toimii samalla tavalla kuin OR JavaScript-operaattori.
- Ryhmittelymerkki (()): Ryhmittelymerkin avulla voit ryhmitellä merkkejä tai alilausekkeita, käyttää operaattoreita niihin yksikkönä ja ohjata toimintojen järjestystä.
Merkkijonon testaaminen JavaScriptin säännöllistä lauseketta vastaan
JavaScriptissä voit testata merkkijonoa säännöllisen lausekkeen kanssa useilla menetelmillä.
Tässä osiossa oletetaan, että sinulla on perusymmärrys säännöllisistä lausekkeista ja kuvioista. Jos et pidä säännöllisistä lausekkeista, tarkista säännöllisten lausekkeiden aloittelijan opas ensimmäinen.
Testimenetelmä
The .testata() menetelmä palauttaa loogisen arvon, joka osoittaa, vastaako säännöllinen lauseke merkkijonoa vai ei. Tämä menetelmä käyttää argumenttina merkkijonoa, jolla haku suoritetaan. Se on erityisen hyödyllinen yksinkertaisissa tarkastuksissa.
Esimerkiksi:
antaa regex = /.com$/;
antaa str = "esimerkki.fi";
konsoli.log (regex.test (str)); // totta
Tämä säännöllinen lauseke vastaa merkkijonoa, joka päättyy ".com".
Exec-menetelmä
The .exec() -menetelmä palauttaa taulukon, joka sisältää osuvan tekstin ja kaikki siepatut ryhmät tai tyhjä jos se ei löydä vastinetta. Tämä menetelmä käyttää argumenttina merkkijonoa, jolla haku suoritetaan. Se on hyödyllinen monimutkaisemmille säännöllisille lausekkeille.
Esimerkiksi:
antaa regex = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
antaa str = "123-456-7890";
antaa tulos = regex.exec (str);
jos (tulos !== tyhjä) {
konsoli.Hirsi(`${tulos[0]} on kelvollinen puhelinnumero".);
} muu {
konsoli.Hirsi("Väärä puhelinnumero");
}
Yllä oleva säännöllinen lauseke vastaa merkkijonoa, joka alkaa valinnaisella "(", kolme numeroa ja valinnainen")". Sitten se etsii valinnaista "-", ".", tai välilyönti, jota seuraa kolme numeroa. Se etsii vihdoin valinnaista "-", ".", tai välilyönti, jota seuraa neljä numeroa merkkijonon lopussa.
Tämä säännöllinen lauseke vastaa puhelinnumeroita muodossa "(xxx) xxx-xxxx", "xxx-xxx-xxxx", "xxx.xxx.xxxx" tai "xxx xxx xxxx".
Jos se löytää ottelun, .exec() palauttaa taulukon, joka sisältää osuvan tekstin ja kaikki siepatut ryhmät (määritelty suluissa). Se sisältää jokaisen ryhmän lisäelementtinä sen palauttamassa taulukossa. Tämän avulla voit käyttää osuvan tekstin tiettyjä osia, mikä voi auttaa sinua poimimaan tietoja merkkijonosta.
Korvausmenetelmä
The .korvata() menetelmä etsii vastaavuutta säännöllisen lausekkeen ja merkkijonon välillä ja korvaa vastaavan tekstin määritetyllä korvaustekstillä. Tämä on merkkijonoobjektien menetelmä, ja se käyttää argumentteina säännöllisen lausekkeen ja korvaavan merkkijonon.
Esimerkiksi:
antaa merkkijono = "Nopea ruskea kettu hyppää laiskan koiran yli.";
antaa lauseke = /The/gi;
antaa newString = string.replace (lauseke, "a");
konsoli.log (uusi merkkijono); // "nopea ruskea kettu hyppää laiskan koiran yli."
Tämä esimerkki kutsuu korvata() menetelmällä merkkijono muuttuja, joka välittää säännöllisen lausekkeen, ilmaisu. Säännöllinen lauseke vastaa kaikkia esiintymiä merkkijonossa kirjainkoosta riippumatta. Korvausmenetelmän kutsu kehottaa sitä korvaamaan jokaisen esiintymän merkkijonolla "a".
Suorituskykyä koskevia näkökohtia käytettäessä säännöllisiä lausekkeita
Vaikka säännölliset lausekkeet auttavat sovittamaan ja muokkaamaan merkkijonoja, ne voivat myös olla kalliita suorituskyvyn kannalta. Kuvioiden tekeminen mahdollisimman täsmällisiksi ja yksinkertaisiksi pitäminen on elintärkeää niiden suorituskyvyn säilyttämiseksi.