Taskut säännöllisessä lausekkeessa JavaScriptissä
Taskujen sisältö on saatavilla ei vain korvausmerkkijonossa, vaan myös itse säännöllisessä lausekkeessa: me voimme laittaa jotain taskuun ja sitten suoraan säännöllisessä lausekkeessa sanoa, että tässän pitää olla tämän taskun sisältö.
Taskujen sisältö on saatavilla niiden numeroilla,
joiden edessä on käänteinen viiva. Esimerkiksi,
ensimmäinen tasku on saatavilla näin: \1,
toinen tasku näin - \2, kolmas
- \3 ja niin edelleen.
Olen varma, että kaikki edellä kirjoitetut on vielä melko sumea sinulle. Tämä ei ole yllättävää, koska taskut ovat säännöllisten lausekkeiden vaikein ymmärtää oleva osa. Opiskellaanpa esimerkkien avulla.
Esimerkki
Olkoon meillä tällainen merkkijono:
let str = 'aa bb cd ef';
Etsitään siitä kaikki kohdat, joissa on kaksi mitä tahansa samaa kirjainta peräkkäin. Ongelman ratkaisemiseksi etsimme mitä tahansa kirjainta, laitamme sen taskuun ja sitten tarkistamme, tuleeko seuraavana merkkinä tämän taskun sisältö:
let res = str.replace(/([a-z])\1/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'! ! cd ef'
Esimerkki
Olkoon meillä tällainen merkkijono:
let str = 'asxca buzxb csgd';
Etsitään siitä kaikki sanat, joissa ensimmäinen ja viimeinen kirjain ovat samat. Ratkaistaksesi ongelman kirjoitamme seuraavan mallin: kirjain, sitten yksi tai useampi kirjain, ja sitten sama kirjain kuin ensimmäinen:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
Tuloksena muuttujaan kirjoitetaan seuraava:
'! ! csgd'
Käytännön tehtävät
Annettu merkkijono:
let str = 'aaa bbb ccc xyz';
Etsi kaikki osajonot, joissa on kolme samaa kirjainta peräkkäin.
Annettu merkkijono:
let str = 'a aa aaa aaaa aaaaa';
Etsi kaikki osajonot, joissa on kaksi tai useampia samoja kirjaimia peräkkäin.
Annettu merkkijono:
let str = 'aaa aaa bbb bbb ccc ddd';
Etsi kaikki osajonot, joissa on kaksi samaa sanaa peräkkäin.