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+$.
Ladataan työkalua...
Etkö tiedä mihin ryhtyä seuraavaksi? Selaa kaikki työkalut
Hae työkalua →Regex-testaustyökalu näyttää, mihin säännöllinen lauseke osuu, ja suojaa jumittuvilta kaavoilta.
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.
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.
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.