Ilmainen Online-Regex-testaaja & Validaattori - Testaa Mallit Heti
Testaa ja validoi säännölliset lausekkeet online-tilassa reaaliaikaisella korostuksella. Ilmainen regex-mallin testaaja syntaksin validoinnilla, vastaavuustuloksilla ja tallennustoiminnolla. Testaa regex nyt!
Regex-kuvioiden testaaja
Osumien tulokset
Syötä kuvio ja testiteksti nähdäksesi tulokset
Tallenna kuvio
Osumien tulokset
Syötä kuvio ja testiteksti nähdäksesi tulokset
Tallennetut kuviot
Ei tallennettuja kuvioita vielä
Regex-symbolien opas
.Vastaa mitä tahansa merkkiä paitsi rivinvaihtoa\dVastaa mitä tahansa numeroa (0-9)\DVastaa mitä tahansa ei-numeroa\wVastaa mitä tahansa sanamerkkiä (a-z, A-Z, 0-9, _)\WVastaa mitä tahansa ei-sanamerkkiä\sVastaa mitä tahansa välimerkkiä\SVastaa mitä tahansa ei-välimerkkiä^Vastaa rivin alkua$Vastaa rivin loppua*Vastaa 0 tai useampaa edeltävää merkkiä+Vastaa 1 tai useampaa edeltävää merkkiä?Vastaa 0 tai 1 edeltävää merkkiä{n}Vastaa täsmälleen n edeltävää merkkiä{n,}Vastaa vähintään n edeltävää merkkiä{n,m}Vastaa n:n ja m:n väliltä edeltävää merkkiä[abc]Vastaa mitä tahansa merkkejä sulkeissa[^abc]Vastaa mitään merkkiä, joka ei ole sulkeissa(abc)Ryhmittää useita merkkejä yhteen ja tallentaa osumana|bVastaa joko a:ta tai b:tä\bVastaa sanan rajapintaaDokumentaatio
Mikä on regex-testeri
Regex-testeri on työkalu, joka tarkistaa säännöllisen lausekkeen tekstinpätkää vasten ja näyttää, mitä se löytää. Säännöllinen lauseke eli regex on lyhyt merkkijono, joka kuvaa tekstissä esiintyvää kaavaa, kuten ”kolme peräkkäistä numeroa” tai ”mikä tahansa isolla kirjaimella alkava sana”. Tämän regex-validaattorin avulla käyttäjä voi kirjoittaa kaavan ja testitekstiä ja nähdä osumat heti korostettuina ilman koodin kirjoittamista.
Säännöllisiä lausekkeita käytetään monissa ohjelmointikielissä tekstin etsimiseen, käyttäjän syötteen oikean muodon tarkistamiseen ja tiettyjen osien poimimiseen suuremmasta tekstikokonaisuudesta. Syntaksi on tiivis, mutta siinä on helppo tehdä virheitä, joten kaavan testaaminen ennen sen käyttämistä ohjelmassa auttaa havaitsemaan virheet ajoissa.
Säännöllisen lausekkeen testaaminen verkossa
- Kirjoita kaava. Syötä regex kaavakenttään. Työkalu tarkistaa syntaksin kirjoittamisen aikana ja näyttää virheilmoituksen, jos kaava on virheellinen, esimerkiksi jos hakasulku tai sulkumerkki on jäänyt avoimeksi.
- Valitse liput. Liput muuttavat tapaa, jolla kaavaa sovelletaan (katso jäljempänä).
- Syötä testiteksti. Kirjoita tai liitä haettava teksti testitekstikenttään.
- Lue tulokset. Osumat korostetaan tekstissä, ja työkalu ilmoittaa löydettyjen osumien määrän. Jos testitekstiä on annettu, se kertoo myös, vastaako kaava koko tekstiä alusta loppuun vai vain sen osaa.
- Tallenna kaava. Kaavan voi tallentaa lyhyellä nimellä, jotta sitä voi käyttää myöhemmin uudelleen. Tallennetut kaavat säilytetään selaimessa, ei palvelimella, joten ne näkyvät vain samassa laitteessa ja selaimessa.
- Kopioi tulokset. Osuneen tekstin tai itse kaavan voi kopioida leikepöydälle yhdellä napsautuksella.
Regex-liput
Lippu on kaavan perään lisättävä yksittäinen kirjain, joka muuttaa sen toimintaa. Tämä työkalu tukee neljää lippua yksittäin tai yhdistelminä:
| Lippu | Nimi | Vaikutus |
|---|---|---|
g | Globaali | Etsii tekstistä kaikki osumat ensimmäiseen pysähtymisen sijaan. |
i | Kirjainkoosta riippumaton | Ei huomioi eroa isojen ja pienten kirjainten välillä. |
m | Monirivinen | Saa merkit ^ ja $ vastaamaan kunkin rivin alkua ja loppua, ei vain koko tekstin alkua ja loppua. Se muuttaa osumien sijaintia, mutta ei jäljempänä kuvattua koko tekstin tarkistusta. |
s | Piste vastaa kaikkea | Saa merkin . vastaamaan myös rivinvaihtomerkkejä. |
Lippuja voi yhdistää, esimerkiksi gi tarkoittaa globaalia ja kirjainkoosta riippumatonta hakua ja gms globaalia, monirivistä hakua, jossa piste vastaa kaikkea.
Miten työkalu löytää osumat
Osumien etsijä hakee tekstistä aina kaavan jokaisen esiintymän, minkä vuoksi osumien laskenta toimii kuin globaali lippu olisi käytössä, vaikka sitä ei olisi valittu avattavasta luettelosta. Jokainen osuma tallennetaan sijaintinsa ja pituutensa kanssa, minkä jälkeen alkuperäinen teksti jaetaan osuneisiin ja osumattomiin osiin, jotta osumat voidaan korostaa.
Tarkistaakseen, vastaako kaava koko tekstiä, työkalu ympäröi kaavan ryhmässä, joka ei tallenna osumaa, ja ankkuroi sen: ^(?:pattern)$. Ryhmittely on tärkeää, koska |-vaihtoehto sitoutuu löyhemmin kuin ankkurit. Ilman ryhmää kaava, kuten cat|dog, joka on ankkuroitu muodossa ^cat|dog$, tarkoittaisi oikeasti ”alkaa merkkijonolla cat tai päättyy merkkijonoon dog”, mikä ei ole sama kuin ”koko teksti on cat tai dog”.
Tämä tarkistus poistaa myös monirivisen lipun. Kun m on käytössä, ^ ja $ vastaavat jokaista rivinvaihtoa, joten ankkuroitu testi vastaisi kysymykseen ”vastaako jokin yksittäinen rivi?” eikä kysymykseen ”vastaako koko teksti?”. Työkalu poistaa m-lipun tätä tarkistusta varten ja säilyttää liput i ja s, koska nämä kaksi muuttavat kaavan löytämiä osumia eivätkä ankkurien sijaintia. Vastaus koskee siis aina koko tekstiä, myös sen rivinvaihtoja.
Laskuesimerkki
Kaava: \d+ (yksi tai useampi numero), lippu: g, testiteksti: Room 12 has 5 chairs.
- Löydetyt osumat:
12ja5, joten osumien määrä on 2. - Koko tekstin tarkistus: kaava ei vastaa koko tekstiä, koska tekstissä on myös kirjaimia ja välilyöntejä.
Jos testiteksti vaihdetaan muotoon 12345, sama kaava vastaa koko merkkijonoa, joten koko tekstin tarkistus ilmoittaa tulokseksi tosi.
Regex-syntaksin viite
Merkkien vastaavuus
| Symboli | Merkitys | Esimerkki | Osumat |
|---|---|---|---|
. | Mikä tahansa merkki paitsi rivinvaihto | a.c | ”abc”, ”adc”, ”a1c” |
\d | Mikä tahansa numero, 0–9 | \d{3} | "123", "456" |
\D | Mikä tahansa merkki, joka ei ole numero | \D+ | ”abc”, ”xyz” |
\w | Mikä tahansa kirjain, numero tai alaviiva | \w+ | ”abc123”, ”test_123” |
\W | Mikä tahansa merkki, joka ei ole kirjain, numero tai alaviiva | \W+ | "!@#" |
\s | Mikä tahansa tyhjämerkki | a\sb | ”a b” |
\S | Mikä tahansa merkki, joka ei ole tyhjemerkki | \S+ | ”abc” |
Sijaintiankkurit
| Symboli | Merkitys | Esimerkki | Osumat |
|---|---|---|---|
^ | Rivin alku | ^abc | ”abc” rivin alussa |
$ | Rivin loppu | abc$ | ”abc” rivin lopussa |
\b | Sananraja | \bword\b | ”word” kokonaisena sanana |
Toistomääritteet
| Symboli | Merkitys | Esimerkki | Osumat |
|---|---|---|---|
* | Edeltävästä osasta nolla tai useampi | a*b | ”b”, ”ab”, ”aab” |
+ | Edeltävästä osasta yksi tai useampi | a+b | ”ab”, ”aab” |
? | Edeltävästä osasta nolla tai yksi | colou?r | ”color”, ”colour” |
{n} | Edeltävästä osasta täsmälleen n kappaletta | a{3} | ”aaa” |
{n,} | Edeltävästä osasta vähintään n kappaletta | a{2,} | ”aa”, ”aaa” |
{n,m} | Edeltävästä osasta n–m kappaletta | a{2,4} | ”aa”, ”aaa”, ”aaaa” |
Merkkijoukot ja ryhmät
| Symboli | Merkitys | Esimerkki | Osumat |
|---|---|---|---|
[abc] | Mikä tahansa yksi hakasuluissa luetelluista merkeistä | [aeiou] | mikä tahansa yksittäinen vokaali |
[^abc] | Mikä tahansa merkki, jota ei ole lueteltu hakasuluissa | [^aeiou] | mikä tahansa muu kuin vokaalimerkki |
(abc) | Ryhmittelee merkit ja tallentaa osuman | (abc)+ | ”abc”, ”abcabc” |
| a | b | Vastaa merkkiä a tai b | cat |
Kaksi muuta ominaisuutta on hyvä tuntea. Lookahead eli ennakkoehto, muodossa a(?=b), vastaa merkkiä ”a” vain, kun sitä seuraa ”b”, mutta ei sisällytä ”b”:tä osumaan. Lookbehind eli jälkiehto, muodossa (?<=a)b, vastaa merkkiä ”b” vain, kun se tulee heti merkin ”a” jälkeen.
Yleisiä kaavaesimerkkejä
Nämä kaavat voi liittää työkaluun, jotta niiden toimintaa voi tarkastella esimerkkitekstiä vasten.
Vain numerot: ^\d+$ vastaa kokonaan numeroista koostuvaa merkkijonoa, kuten ”48210”, ja hylkää kaiken, joka sisältää kirjaimen tai välilyönnin.
Sähköpostiosoite (perustarkistus): ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ vastaa muotoa name@domain.tld olevia osoitteita, kuten ”user@example.com”. Kyseessä on yksinkertainen tarkistus, ei internet-standardien määrittelemä sähköpostiosoitteen täydellinen muoto, joten jotkin epätavalliset mutta kelvolliset osoitteet eivät läpäise sitä.
Yhdysvaltalainen puhelinnumero: ^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$ vastaa esimerkiksi muotoja ”(123) 456-7890”, ”123-456-7890” ja ”1234567890”.
Päivämäärä muodossa YYYY-MM-DD: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$ tarkistaa, että kuukausi on välillä 01–12 ja päivä välillä 01–31. Se ei tarkista, onko päivä kelvollinen kyseisessä kuukaudessa, joten se hyväksyy arvon ”2024-02-30”, vaikka helmikuussa ei koskaan ole 30 päivää.
Usein kysyttyä
Mikä on säännöllinen lauseke? Säännöllinen lauseke on merkkijono, joka määrittää hakukaavan. Sitä käytetään tekstin etsimiseen, osumien löytämiseen ja tekstin muokkaamiseen useimmissa ohjelmointikielissä ja tekstieditoreissa.
Mitä globaali lippu tekee?
Ilman globaalia lippua haku päättyy yleensä ensimmäisen osuman jälkeen. Globaalin lipun (g) kanssa haku jatkuu ja ilmoittaa tekstin jokaisen osuman. Tämä työkalu etsii aina kaikki osumat niitä laskiessaan valitusta lipusta riippumatta.
Miten löydän kirjaimellisen pisteen tai muun erikoismerkin?
Lisää sen eteen kenoviiva. Esimerkiksi \. vastaa kirjaimellista pistettä ”minkä tahansa merkin” sijaan, mikä on suojaamattoman merkin . merkitys.
Mikä ero on lausekkeilla .* ja .*??
.* on ahne ja vastaa mahdollisimman montaa merkkiä. .*? on laiska ja vastaa mahdollisimman harvaa merkkiä niin, että kaavan loppuosa voi silti onnistua.
Miksi työkalu ilmoittaa, ettei teksti vastaa kokonaan, vaikka jokainen rivi vastaa?
Koko tekstin tarkistus käsittelee tekstiä yhtenä merkkijonona, rivinvaihdot mukaan lukien. Kaava kuten \d+ vastaa kumpaakin riviä 12 ja 34 erikseen, mutta kaksi riviä ja niiden välissä oleva rivinvaihto eivät koostu kokonaan numeroista, joten koko tekstin vastaus on ei. Usean rivin kattavan tekstin löytämiseksi kaavan on katettava myös rivinvaihdot, esimerkiksi muodolla [\s\S]+.
Miten tarkistan, että koko merkkijono vastaa kaavaa eikä vain sen osa?
Lisää kaavan alkuun ^ ja loppuun $, esimerkiksi ^[0-9]+$ vain numeroista koostuvalle merkkijonolle.
Vastaavatko tämän testerin säännöt muiden ohjelmointikielten regex-sääntöjä? Tämä työkalu käyttää JavaScriptiin sisäänrakennettua säännöllisten lausekkeiden käsittelymoottoria. Suurin osa perussyntaksista, kuten merkkiluokat ja toistomääritteet, on yhteinen esimerkiksi Pythonille, Javan ohjelmointikielelle ja Perlille, mutta yksityiskohdissa on eroja, joten täällä toimivan kaavan ei voida taata toimivan samalla tavalla kaikkialla.
Viitteet
- "Regular expression." Wikipedia, Wikimedia Foundation. https://en.wikipedia.org/wiki/Regular_expression
- MDN Web Docs. "Regular expressions." Mozilla. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
- Friedl, J. E. F. (2006). Mastering Regular Expressions. O’Reilly Media.