Regex-testaaja
Testaa JavaScriptin säännöllisiä lausekkeita livenä: korostetut osumat, kaappausryhmät, korvaus ja selkokielinen selitys jokaisesta osasta.
| # | Kohta | Osuma | Ryhmät |
|---|
Lausekkeen selitys
Varoitus: toistuva ryhmä sisältää toisen rajoittamattoman toistomääreen, esimerkiksi (a+)+. Tällaiset lausekkeet voivat vaatia eksponentiaalisen ajan tekstillä, joka melkein täsmää (katastrofaalinen peruutus).
Näin käytät regex-testaajaa
- Kirjoita lauseke kenttään Säännöllinen lauseke ilman ympäröiviä vinoviivoja. Vinoviivat ja käytössä olevat liput näkyvät kentän ympärillä, esimerkiksi
/lauseke/g. - Valitse tarvitsemasi Liput:
g(global),i(ei kirjainkokoa),m(monirivinen),s(dotAll),u(unicode) taiy(sticky). - Liitä haettava teksti kenttään Testiteksti. Osumat korostetaan kirjoittaessasi, ja taulukko listaa jokaisen osuman kohtineen ja kaappausryhmineen.
- Jos haluat kokeilla korvausta, täytä Korvaus. Kenttä Tulos korvauksen jälkeen näyttää tekstin, jossa jokainen osuma on korvattu, valmiina kopioitavaksi.
- Lue Lausekkeen selitys tarkistaaksesi, mitä jokainen lausekkeen osa tekee. Etkö tiedä, mistä aloittaa? Napsauta Lataa esimerkki.
Mitä testaaja näyttää
- Korostetut osumat: jokainen osuma testitekstissä merkitään, joten näet yhdellä silmäyksellä, mitä lauseke tavoittaa ja mitä se ohittaa.
- Osumataulukko: jokaisen osuman numero, sen kohta (merkkien määrä alusta alkaen, nollasta laskien), täsmännyt teksti ja jokaisen kaappausryhmän arvo. Nimetyt ryhmät, kuten
(?<year>\d{4}), näkyvät nimellään, ja ryhmät, jotka eivät osallistuneet osumaan, näytetään muodossa “(ei osumaa)”. Taulukkoon listataan enintään 1 000 ensimmäistä osumaa. - Korvaus: korvausteksti käyttää JavaScriptin syntaksia:
$1tai$2numeroiduille ryhmille,$<nimi>nimetyille ryhmille,$&koko osumalle ja$$dollarimerkille sellaisenaan. Ilmang-lippua korvataan vain ensimmäinen osuma. - Selitys: lauseke jaetaan osiin (kirjaimellinen teksti, merkkiluokat, ankkurit, ryhmät, toistomääreet, ympäristötarkistukset, takaisinviittaukset), ja jokaiselle on lyhyt kuvaus. Sisäkkäiset ryhmät sisennetään, mikä helpottaa pitkien lausekkeiden tarkastelua huomattavasti.
Liput lyhyesti
| Lippu | Vaikutus |
|---|---|
g |
Löytää kaikki osumat eikä pysähdy ensimmäiseen |
i |
Ei erota isoja ja pieniä kirjaimia |
m |
^ ja $ täsmäävät jokaisen rivin alkuun ja loppuun |
s |
. täsmää myös rivinvaihtoihin |
u |
Täysi Unicode-tila: \u{…}, \p{…} ja emojit käsitellään yksittäisinä merkkeinä |
y |
Sticky: jokaisen osuman on alettava täsmälleen edellisen päättymiskohdasta |
Katastrofaalinen peruutus
Jotkin lausekkeet vaativat eksponentiaalisen ajan tekstillä, joka melkein täsmää. Klassinen esimerkki on (a+)+$ pitkällä a-jonolla, jonka perässä on b: moottori kokeilee kaikki tavat jakaa a-merkit kahden toistomääreen kesken ennen luovuttamista. Tämä ongelma, josta käytetään nimeä ReDoS, on kaatanut oikeita verkkosivustoja.
Tämä työkalu suojaa selaintasi kolmella tavalla. Haku ajetaan taustatyöntekijässä, joka pysäytetään 1,5 sekunnin jälkeen. Testiteksti on rajattu 100 000 merkkiin. Lisäksi selitys varoittaa, kun toistuva ryhmä sisältää toisen rajoittamattoman toistomääreen. Kun lausekkeen aikakatkaisu laukeaa, kirjoita se uudelleen niin, että jokainen merkki voi täsmätä vain yhdellä tavalla, esimerkiksi a+$ lausekkeen (a+)+$ sijaan.
Usein kysytyt kysymykset
Mitä regex-murretta työkalu käyttää?
Se käyttää selaimesi JavaScript- (ECMAScript) moottoria täsmälleen samoin kuin new RegExp() ja String.prototype.replace() omassa koodissasi. Suurin osa syntaksista on yhteistä PCRE:n, Pythonin ja Javan kanssa, mutta joitakin eroja on: omistavia toistomääreitä ja atomisia ryhmiä ei ole JavaScriptissä, ja takatarkistusta tukevat kaikki nykyiset selaimet.
Miksi lausekkeeni löytää vain yhden osuman?
g-lippu ei ole päällä. Ilman sitä JavaScript pysähtyy ensimmäiseen osumaan, ja korvaus muuttaa vain sen.
Miten täsmään pisteeseen, hakasulkuun tai kysymysmerkkiin sellaisenaan?
Escapeta se kenoviivalla: \., \[, \?. Selitys näyttää escapetut merkit muodossa “(escapettu)”, joten voit tarkistaa ne.
Lähetetäänkö tekstiäni minnekään?
Ei. Lauseke ja teksti käsitellään vain selaimessasi, joten työkalu sopii lokitiedostoille ja henkilötietoja sisältävälle datalle.
Miksi kohta poikkeaa editorini sarakkeesta?
Kohdat lasketaan merkkeinä nollasta alkaen kaikkien rivien yli, kuten JavaScriptin match.index. Rivinvaihto lasketaan yhdeksi merkiksi, ja emoji perusmonikielitason ulkopuolelta lasketaan kahdeksi.
Aiheeseen liittyvät työkalut
- JSON-muotoilija ja -validaattori Ilmainen JSON-muotoilija ja -validaattori, joka siistii, pienentää ja tarkistaa JSONin selaimessa ja ilmoittaa syntaksivirheet rivin ja sarakkeen kanssa.
- URL-koodaaja ja -dekooderi Ilmainen URL-koodaaja ja -dekooderi. Prosenttikoodaa kyselyparametreja tai kokonaisia URL-osoitteita, pura %XX-sekvenssit ja käsittele + välilyöntinä.
- Hash-generaattori Luo MD5-, SHA-1-, SHA-256- ja SHA-512-tiivisteet tekstistä tai minkä kokoisista tiedostoista tahansa ja tarkista tarkistussummat. Kaikki toimii selaimessa.