Mikä tämä työkalu on?
Säännöllinen lauseke (regex) on kompakti kuviokieli tekstin etsimiseen, validointiin ja poimintaan: sähköpostikuvio voi validoida lomakesyötteen, \d{4}-\d{2}-\d{2} löytää päivämääriä, ja sieppausryhmät poimivat tarvitsemasi osat. Lähes jokainen ohjelmointikieli ja editori tukee regexiä.
Tämä testeri käyttää JavaScript-regex-moottoria — samaa, joka toimii Node.js:ssä ja jokaisessa selaimessa — joten täällä rakennetut kuviot toimivat identtisesti JavaScript-/TypeScript-koodissasi. Useimmat kuviot toimivat myös muuttumattomina Pythonissa, Javassa ja Gossa.
Miksi käyttää sitä?
- Live-palaute: osumat korostuvat keltaisella kirjoittaessasi kaavaa.
- Sieppausryhmät näytetään per osuma — näet tarkalleen, mitä $1 ja $2 sisältävät.
- Täysi lippujen tuki: g (kaikki osumat), i (ei kirjainkoon erottelua), m (monirivinen), s (piste vastaa rivinvaihtoa), u (unicode).
- Selkeät virheilmoitukset, kun kaavassa on syntaksivirhe.
- Ilmainen ja yksityinen — kaava ja teksti eivät koskaan poistu selaimestasi.
Käyttöohje
- Kirjoita kaavasi kahden /-merkin väliin (kenoviivoja ei tarvitse itse paeta).
- Säädä lippuja toisen /-merkin jälkeisessä pienessä laatikossa — oletus g löytää kaikki osumat.
- Liitä testitekstisi alle.
- Osumat korostuvat välittömästi; sieppausryhmät listataan alle.
- Jos kaava on virheellinen, virheilmoitus selittää, mikä on vialla.
Esimerkki
Syöte
Kaava: (\w+)@(\w+)\.com
Testiteksti: Ota yhteyttä alice@example.com tai bob@test.comTuloste
✓ 2 osumaa
#1 ryhmät: $1=alice $2=example
#2 ryhmät: $1=bob $2=testSulut luovat sieppausryhmiä, joihin voit viitata muodossa $1 ja $2 korvauksissa.
Käytännön vinkkejä
- Validoitko sähköpostisyötettä? ^[^\s@]+@[^\s@]+\.[^\s@]+$ on salliva kaava, joka nappaa ilmeiset kirjoitusvirheet hylkäämättä kelvollisia mutta epätavallisia osoitteita — täysi RFC 5322 -yhteensopivuus vaatii kirjaston, ei yhtä riviä.
- Poimitko kyselyparametreja URL-osoitteesta? [?&]([^=]+)=([^&]*) g-lipulla, ja lue sitten $1/$2 per osuma sen sijaan, että pilkkoisit käsin &- ja =-merkkien mukaan.
- Aiotko käyttää kaavaa .replace()-metodissa? Testaa se täällä ensin — se, mikä korostuu, on täsmälleen se, mihin .replace() koskee, sieppausryhmät mukaan lukien.
- Jäsennätkö monirivistä lokia (aikaleiman täsmääminen kunkin rivin alusta)? Lisää m-lippu, jotta ^ ja $ ankkuroituvat riveittäin koko merkkijonon sijaan.
- Kopioitko kaavan Pythonista tai PHP:sta eikä se osu täällä? Tarkista (?P<name>...) -nimetyt ryhmät — JavaScript käyttää muotoa (?<name>...), ei P:tä — tai possessiiviset kvantifikaattorit (++, *+), joita ei ole JavaScript-regexissä.
JavaScript-regex-testeri, ei yleiskäyttöinen
Tämä työkalu ajaa JavaScriptin sisäänrakennettua RegExp-moottoria — täsmälleen samaa koodipolkua, joka on str.match(kaava):n tai kaava.test(str):n takana selaimen konsolissa tai Node.js:ssä. Tämä eroaa PCRE:tä (mitä PHP käyttää ja mitä monet "universaalit" regex-testerit oletuksena käyttävät) tai Pythonin re-moduulia vastaan testaamisesta: JavaScriptissä ei ole possessiivisia kvantifikaattoreita eikä atomisia ryhmiä, ja nimetyt sieppausryhmät käyttävät muotoa (?<name>...) PCRE:n/Pythonin (?P<name>...) sijaan.
Jos olet viemässä kaavaa tuotantoon JS:ssä tai TypeScriptissä — lomakevalidointi, reitin täsmäytys, lokitiedoston jäsennys — sen testaaminen täällä tarkoittaa nollaa murre-eroa: se, mikä tällä sivulla korostuu, on täsmälleen se, mihin new RegExp(kaava, liput) osuu suoritusaikana.
Mihin tämä sopii oikeissa työnkuluissa
Regex-testi on harvoin yksinäinen vaihe. Tavallinen järjestys: vahvista kaava täällä, aja varsinainen .replace() koodissasi, ja diffaa sitten teksti ennen ja jälkeen varmistaaksesi, että korvaus teki juuri sen mitä odotit — eikä muuta.
Jäsennetyn datan poiminta sieppausryhmillä johtaa usein suoraan JSON-muotoon — muotoile poimittu tulos tarkistaaksesi, että se jäsentyi odotetusti.
Usein kysytyt kysymykset
Mitä regex-murretta tämä testeri käyttää?
JavaScript (ECMAScript), jokaisen selaimen ja Node.js:n moottori. Ydinsyntaksi on siirrettävissä, mutta jotkin ominaisuudet eroavat kielten välillä — esim. lookbehind-tuki ja nimettyjen ryhmien syntaksi vaihtelevat Pythonissa ja Javassa.
Miksi kaavani löytää vain ensimmäisen osuman?
g-lippu (global) puuttuu. Ilman g:tä regex pysähtyy ensimmäisen osuman jälkeen. Tämä työkalu käyttää oletuksena g:tä — tarkista, ettet ole poistanut sitä.
Miksi . ei vastaa rivinvaihtoja tekstissäni?
Oletuksena . vastaa mitä tahansa merkkiä paitsi rivinvaihtoja. Lisää s-lippu (dotall), jotta . vastaa myös rivinvaihtoja, tai käytä [\s\S]:ta siirrettävänä vaihtoehtona.
Mitä sieppausryhmien tulokset tarkoittavat?
Jokainen sulkupari kaavassasi siepaa tekstin, johon se osui. $1 on ensimmäinen ryhmä, $2 toinen, ja niin edelleen — näihin viitataan korvausoperaatioissa ja poimintakoodissa.
Miksi regexini on hidas tai jumittaa?
Todennäköisesti katastrofaalinen taaksepäin haku, jonka aiheuttavat sisäkkäiset kvantifikaattorit kuten (a+)+ ei-täsmäävällä syötteellä. Kirjoita kaava uudelleen välttääksesi epäselvän toiston. Tämä työkalu rajoittaa 1000 osumaan pysyäkseen responsiivisena.