UltKit

Regex-prófari

Sláðu inn mynstur, hakaðu við flöggin sem þú þarft og límdu inn texta: hver samsvörun er auðkennd um leið og þú skrifar og birt í lista með staðsetningu sinni og fangahópum. Mynstrið keyrir á regex-vél vafrans þíns sjálfs í JavaScript, svo niðurstöðurnar eru þær sömu og í kóðanum þínum og textinn fer aldrei úr tækinu þínu.

Flögg

0 stafir · 0 orð · 0 línur

Samsvaranir eru auðkenndar hér.

0 stafir · 0 orð · 0 línur

Keyrir alfarið í þessum vafraflipa. Textinn þinn er aldrei sendur inn eða vistaður.

JavaScript regex-tákn

Dálkurinn með fyrstu samsvörun var búinn til með því að keyra hvert mynstur á texta sínum í JavaScript-vélinni sem bjó til þessa síðu.

TáknMerkingMynsturTextiFyrsta samsvörun
\dTölustafur 0–9/\d+/Order 66 shipped66
\wBókstafur, tölustafur eða undirstrik (ASCII)/\w+/snake_case-idsnake_case
\sAutt bil, þar með talin tab og línuskil/\s+/two spaces
.Hvaða stafur sem er nema línuskil (nema með s)/a.c/abc a-cabc
^ $Upphaf og endir inntaks (eða línu, með m)/^\w+$/singlesingle
[abc]Einn af stöfunum sem eru taldir upp/[aeiou]/rhythm and bluesa
[^abc]Hvaða stafur sem er sem er ekki talinn upp/[^0-9]+/2026-10-18-
* + ?0 eða fleiri, 1 eða fleiri, 0 eða 1/colou?r/color colourcolor
{n,m}Milli n og m sinnum/\d{2,4}/7 42 1999 12345642
(…)Handsamandi hópur/(\d+)px/width: 320px320px
(?<name>…)Nefndur handsamandi hópur/(?<h>\d\d):(?<m>\d\d)/at 09:4509:45
(?:…)Hópur án handsömunar/(?:ab)+/ababab!ababab
a|bÖnnur hvor hliðin/cat|dog/hotdogdog
\bOrðamörk/\bcat\b/concat catcat
(?=…)Á eftir fylgir (lookahead)/\d+(?=%)/50 of 75%75
(?<!…)Ekki á eftir (neikvætt lookbehind)/(?<!\$)\b\d+/$30 or 4040
\p{L}Hvaða Unicode-bókstafur sem er (krefst u)/\p{L}+/unaïve 東京naïve

Flöggin sex og hverju þau breyta

g (global) finnur allar samsvaranir í stað þess að stoppa við þá fyrstu; án þess inniheldur listinn eina færslu. i hunsar há- og lágstafi. m (multiline) lætur ^ og $ passa við upphaf og lok hverrar línu en ekki aðeins alls textans, sem er það sem þarf fyrir mynstur á borð við bil í enda línu. s (dotAll, bætt við í ES2018) lætur . passa líka við línuskil. u (unicode) meðhöndlar texta sem kóðapunkta, þannig að emoji telst einn stafur, og virkjar eiginleikaraðir á borð við \p{L} fyrir hvaða bókstaf sem er í hvaða letri sem er. y (sticky) passar aðeins nákvæmlega á núverandi stað, en það er hamurinn sem tokenizerar nota. JavaScript hefur einnig d fyrir staðsetningar samsvarana og v fyrir mengjaaðgerðir í stafaflokkum; þetta tól notar aðeins fánana sex hér að ofan.

Undir prófunartextanum sýnir hver samsvörun vísi sinn og hópa. Númeraðir hópar koma úr venjulegum svigum, (?:…) myndar hóp án þess að fanga, og (?<year>\d{4}) býr til nefndan hóp sem birtist undir nafni, eins og ISO-dagsetningardæmið sýnir. Valmyndin Common patterns setur inn prófuð upphafsmynstur fyrir netföng, vefslóðir, IPv4-vistföng, hex-liti, UUID, endurtekin orð og bil í enda línu. Líttu á netfangamynstrið sem skynsemisathugun, ekki staðfestingu: raunveruleg málfræði netfanga er mun frjálslegri og eina raunverulega prófið er að senda skilaboð.

Afturlit (lookbehind) og stjórnlaus bakrakning

Lookaround-segðir prófa hvað umlykur stað án þess að nota það upp. Lookahead, (?=…) og (?!…), hefur alltaf verið hluti af JavaScript; lookbehind, (?<=…) og (?<!…), kom með ES2018 og náði til allra helstu vafra þegar Safari 16.4 innleiddi það árið 2023. Því finnur (?<=\$)\d+ töluna 42 í "$42" án dollaramerkisins. Ólíkt mörgum öðrum vélum leyfir JavaScript lookbehind af hvaða lengd sem er.

JavaScript-vélin notar afturhvarf (backtracking): þegar leið mistekst fer hún til baka og prófar aðra möguleika. Hreiðraðir stuðlar eins og (a+)+$ gefa henni veldisfjölda leiða til að skipta sama textanum, þannig að strengur með 30 a-stöfum og x á eftir getur tekið sekúndur og nokkrir stafir í viðbót klukkustundir. Þetta er stórfellt afturhvarf (catastrophic backtracking) og á netþjónum verður það að ReDoS, þjónustuneitunarárás; ein WAF-regla með þennan galla felldi net Cloudflare í um hálftíma 2. júlí 2019. Þar sem þetta tól keyrir í flipanum þínum getur slíkt mynstur fryst síðuna; endurhlaðaðu og endurskrifaðu það þannig að engir tveir stuðlar geti gert tilkall til sömu stafa, notaðu þrengri flokka eins og [^,]* í stað .*, eða akkeri. Til að breyta textanum sjálfum frekar en að finna samsvaranir, sjá textatól; fleiri tól fyrir forritara eru á síðunni forritaratól.

Algengar spurningar

Af hverju finnur reglulega segðin mín aðeins eina samsvörun?
Fáninn g er slökktur. Án hans stoppar vélin eftir fyrstu samsvörun. Hakaðu við g til að sjá allar samsvaranir; fáninn y einn og sér finnur líka fleiri, en aðeins þegar þær koma beint hver á eftir annarri.
Samsvarar \d tölustöfum úr öðrum letrum í JavaScript?
Nei. Í JavaScript þýðir \d aðeins 0 til 9 og \w aðeins ASCII-bókstafi, tölustafi og undirstrik, jafnvel með fánanum u. Notaðu \p{Nd} eða \p{L} með u fyrir önnur letur.
Hegðar mynstur sem prófað er hér sér eins í Python eða PHP?
Grunnsetningafræðin flyst yfir, en smáatriði eru ólík: nefndir hópar í Python eru skrifaðir (?P<name>…), PHP og Python styðja possessive-stuðla sem JavaScript hefur ekki og reglur um lookbehind eru breytilegar. Prófaðu aftur í vélinni sem á að nota.
Hvernig samsvara ég bókstaflegum punkti eða sviga?
Settu bakstrik fyrir framan það: \. passar við punkt og \[ við upphafshornklofa. Inni í stafaflokki eru flest tákn þegar bókstafleg, þannig að [.] passar líka aðeins við punkt.
Af hverju fraus síðan á meðan ég var að skrifa mynstur?
Mynstrið olli líklega stórfelldu afturhvarfi á textanum þínum. Endurhlaðaðu og forðastu hreiðraða stuðla eins og (.*)* eða (a+)+ og láttu hvern hluta passa við sem minnst.