Ratkaisija

Regex-testaustyökalu – testaa säännöllinen lauseke, näe osumat ja ryhmät

Kirjoita kaava ja testiteksti, niin osumat korostuvat tekstissä heti. Näet jokaisen osuman kohdan, numeroidut ja nimetyt ryhmät sekä korvauksen tuloksen ($1, $<nimi>).

Työkalu käyttää JavaScriptin omaa RegExp-toteutusta ja lippuja g, i, m, s, u ja y. Haku ajetaan erillisessä säikeessä: jos kaava jumittuu katastrofaaliseen backtrackingiin, haku keskeytetään sekunnin jälkeen eikä sivu jäädy. Valmiita kaavoja on esimerkiksi sähköpostille, päivämäärälle ja postinumerolle.

Miksi (a+)+ voi jäädyttää ohjelman?

Sisäkkäisessä toistossa sama merkkijono voidaan jakaa ryhmiin valtavan monella tavalla. Kun teksti ei lopulta osu, regex-moottori kokeilee ne kaikki, ja aika kasvaa eksponentiaalisesti: 34 a-kirjainta ja huutomerkki jumittavat kaavan (a+)+$ yli sekunniksi. Palvelimella tämä on ReDoS-haavoittuvuus. Kirjoita kaava niin, että kukin merkki voi osua vain yhteen toistoon, esimerkiksi a+$.

Regex-testaustyökalu

Ladataan työkalua...

Kokeile myös:

Etkö tiedä mihin ryhtyä seuraavaksi? Selaa kaikki työkalut

Hae työkalua →
Lisätietoa

Regex-testaustyökalu näyttää, mihin säännöllinen lauseke osuu, ja suojaa jumittuvilta kaavoilta.

Mitä tämä tekee?

Kirjoita kaava, valitse liput ja liitä testiteksti.

  • Osumat korostettuina ja osumaluettelo kohtineen ja ryhmineen.
  • Korvaus $1-, $2- ja $<nimi>-viittauksilla.
  • Kaava ja liput tallentuvat osoiteriville jakamista varten; testiteksti ei.
Miten tulosta kannattaa tulkita?

Ilman g-lippua haetaan vain ensimmäinen osuma.

  • Ryhmä, joka ei osallistunut osumaan, näytetään merkinnällä ei mukana.
  • Tyhjä osuma, esimerkiksi a* kohdassa jossa ei ole a:ta, näytetään pystyviivana.
  • Enintään 1 000 osumaa näytetään.
Hyvä tietää

Regex-murteet eroavat toisistaan.

  • JavaScriptin \w ei ota ääkkösiä: suomen sanoille käytä [a-zåäö] tai \p{L} u-lipulla.
  • Python, PHP ja Java poikkeavat syntaksiltaan hieman JavaScriptistä.
  • Lähteet: ECMAScript-spesifikaatio; MDN Web Docs; OWASP, Regular expression Denial of Service.
Huom: Testiteksti käsitellään vain selaimessasi.
Huomasitko virheen tai onko parannusehdotus? info@…