Regex-testaaja

Testaa JavaScriptin säännöllisiä lausekkeita esimerkkitekstiin suoraan selaimessasi.

Lauseke (Pattern)
Liput
Testattava merkkijono
Korostetut osumat
Syötä lauseke testataksesi sitä.

Lausekkeesi ja tekstisi testataan selaimessasi. Mitään ei ladata BroBroGo-palveluun.

UKK

Onko tekstin liittäminen tähän turvallista?

Kyllä. Täsmäys tapahtuu kokonaan selaimessasi – mitään ei lähetetä BroBroGo-palveluun.

Mitä liput g/i/m/s tarkoittavat?

g (global) etsii kaikki osumat pelkän ensimmäisen sijaan. i (case insensitive) jättää kirjainkoon huomiotta. m (multiline) saa merkit ^ ja $ täsmäämään jokaisen rivin alkuun ja loppuun koko merkkijonon sijaan. s (dotAll) sallii pisteen (.) täsmätä myös rivinvaihtoihin.

Miksi työkalu ilmoitti, että haku kestää liian kauan?

Jotkin säännölliset lausekkeet voivat aiheuttaa katastrofaalista takaisinpäin hakua (catastrophic backtracking), jossa moottori kokeilee eksponentiaalisen määrän yhdistelmiä ennen luovuttamista, mikä voi jäädyttää selaimen välilehden. Tämä työkalu keskeyttää haun 2 sekunnin kuluttua, jos näin tapahtuu, jotta sivu pysyy toiminnassa. Kokeile yksinkertaistaa sisäkkäisiä toistoja, kuten (a+)+.

Säännölliset lausekkeet (regular expressions eli regex) ovat merkkijonojen käsittelyyn ja hakemiseen tarkoitettuja hakumalleja, joita käytetään laajasti ohjelmoinnissa ja tekstinkäsittelyssä. Niiden avulla voidaan tarkistaa, vastaako merkkijono tiettyä muotoa, etsiä tekstistä tiettyjä kuvioita tai korvata tekstinosia toisilla. JavaScript-pohjainen Regex-testaaja on suunniteltu säännöllisten lausekkeiden testaamiseen ja muokkaamiseen reaaliaikaisesti suoraan verkkoselaimessa. Työkalu auttaa varmistamaan, että lauseke tunnistaa halutut kuviot oikein, ja auttaa ymmärtämään, miten eri liput vaikuttavat hakutuloksiin.

JavaScript-lausekkeiden syntaksi ja syötteet

Työkalun käyttäminen perustuu kolmeen pääsyötteeseen: hakulausekkeeseen, hakua ohjaaviin lippuihin sekä testattavaan tekstiin.

  • Lauseke (Pattern): Hakumalli, jota testataan tekstivastineita vasten. Esimerkkinä oletushakuna toimii \d+, joka etsii yhtä tai useampaa peräkkäistä numeroa.
  • Liput: Hakukoneen toimintaa ohjaavat valinnat, jotka muuttavat täsmäyssääntöjä. Työkalu tukee neljää keskeistä JavaScript-lippua:
    • g (Global): Etsii tekstistä kaikki mahdolliset osumat ensimmäisen löydetyn osuman sijaan.
    • i: Ohittaa kirjainkoon erot, jolloin esimerkiksi suuret ja pienet kirjaimet tulkitaan samoiksi merkeiksi.
    • m (Multiline): Muuttaa ankkurimerkkien ^ ja $ toimintaa siten, että ne täsmäävät jokaisen yksittäisen rivin alkuun ja loppuun koko tekstijonon alun ja lopun sijaan.
    • s: Sallii pisteen (.) täsmätä myös rivinvaihtomerkkeihin, mikä laajentaa sen kattamaan kaikki mahdolliset merkit.
  • Testattava merkkijono: Teksti, johon hakulauseketta sovelletaan. Työkalun oletustekstinä on "Liitä tai kirjoita tähän teksti, johon haluat testata lauseketta".

Hakutulosten ja ryhmien tulkinta

Kun syötät lausekkeen ja testattavan tekstin, työkalu analysoi ne välittömästi ja tuottaa visuaalisen sekä eritellyn yhteenvedon tuloksista.

Korostetut osumat -osiossa testattava teksti näytetään siten, että kaikki lausekkeeseen täsmäävät kohdat on merkitty värikorostuksin. Tämän avulla näkee heti, mitkä tekstinosat vastaavat hakuehtoa. Osumat-osiossa luetellaan jokainen löydetty kohta erikseen. Jos lausekkeessa on käytetty sulkeilla määriteltyjä kiinniottoryhmiä (capture groups) tiettyjen osien erottamiseksi, nämä näytetään kunkin osuman alla merkinnällä Ryhmä {n}, jossa {n} vastaa ryhmän järjestysnumeroa.

Käyttöliittymässä näytetään myös tilastotietoja, kuten tekstin pituus merkintänä Merkkiä sekä löydettyjen osumien kokonaismäärä muodossa Osumat: {count}.

Hakukoneen säännöt ja rajoitukset

Työkalun toiminnassa sovelletaan tarkkoja sääntöjä virhetilanteiden, poikkeuksellisen laajojen hakujen ja suorituskykyongelmien hallitsemiseksi:

  • Ei osumia: Jos hakulauseke ei täsmää mihinkään kohtaan testattavassa tekstissä, käyttöliittymässä näytetään ilmoitus "Ei osumia.".
  • Virheellinen syntaksi: Jos kirjoitettu säännöllinen lauseke on syntaksiltaan virheellinen, työkalu ilmoittaa "Virheellinen säännöllinen lauseke.".
  • Yksittäishaku: Jos "g" (Global) -lippua ei ole valittu, hakukone palauttaa ainoastaan ensimmäisen löytämänsä osuman.
  • Tulosrajat: Kun "g"-lippu on käytössä, työkalu palauttaa enintään 1 000 osumaa ja näyttää käyttöliittymässä enintään 100 osumakorttia. Jos osumia on enemmän kuin näytettävä enimmäismäärä, järjestelmä ilmoittaa tästä viestillä "Näytetään ensimmäiset {max} osumaa.".
  • Tyhjennys: Käyttöliittymän voi nollata painamalla "Tyhjennä"-painiketta, jolloin näytölle tulee teksti "Tyhjennetty.".

Suorituskyky ja katastrofaalinen takaisinpäin haku

Säännöllisten lausekkeiden kirjoittamiseen liittyy riski suorituskyvyn äkillisestä heikkenemisestä, jota kutsutaan katastrofaaliseksi takaisinpäin hauksi (catastrophic backtracking). Tämä ilmiö syntyy tyypillisesti silloin, kun lausekkeessa on sisäkkäisiä tai päällekkäisiä toistomääreitä (kuten (a+)+), ja hakukone joutuu käymään läpi eksponentiaalisen määrän eri vaihtoehtoja epäonnistuneen haun aikana. Tämä voi jumiuttaa selaimen suorittimen kokonaan.

Tämän estämiseksi työkalussa on sisäänrakennettu aikaraja. Jos lausekkeen suorittaminen kestää yli 2 sekuntia, työkalu keskeyttää prosessin automaattisesti ja antaa varoituksen: "Tämän lausekkeen suorittaminen kestää liian kauan – se saattaa olla katastrofaalisen hidas. Kokeile yksinkertaistaa sitä.". Ongelman ratkaisemiseksi lauseketta on yleensä yksinkertaistettava poistamalla tarpeettomat sisäkkäiset toistot.

Tietosuoja ja käsittely

Tietoturvan ja yksityisyyden kannalta on tärkeää huomata, miten syötettyjä tietoja käsitellään. Kaikki hakulausekkeiden testaus ja tekstin analysointi tapahtuu paikallisesti suoraan käyttäjän omassa verkkoselaimessa. Mitään syötettyä tekstiä tai hakulauseketta ei ladata BroBroGo-palveluun tai lähetetä ulkoisille palvelimille.

Usein kysytyt kysymykset

Onko tekstin liittäminen tähän turvallista?
Kyllä. Täsmäys tapahtuu kokonaan selaimessasi – mitään ei lähetetä BroBroGo-palveluun.

Mitä liput g/i/m/s tarkoittavat?
g (global) etsii kaikki osumat pelkän ensimmäisen sijaan. i (case insensitive) jättää kirjainkoon huomiotta. m (multiline) saa merkit ^ ja $ täsmäämään jokaisen rivin alkuun ja loppuun koko merkkijonon sijaan. s (dotAll) sallii pisteen (.) täsmätä myös rivinvaihtoihin.

Miksi työkalu ilmoitti, että haku kestää liian kauan?
Jotkin säännölliset lausekkeet voivat aiheuttaa katastrofaalista takaisinpäin hakua (catastrophic backtracking), jossa moottori kokeilee eksponentiaalisen määrän yhdistelmiä ennen luovuttamista, mikä voi jäädyttää selaimen välilehden. Tämä työkalu keskeyttää haun 2 sekunnin kuluttua, jos näin tapahtuu, jotta sivu pysyy toiminnassa. Kokeile yksinkertaistaa sisäkkäisiä toistoja, kuten (a+)+.