Utilia

Regex-prófari

Prófaðu JavaScript-reglulegar segðir í beinni með lituðum samsvörunum, söfnunarhópum, útskiptingu og skýringu á hverju tákni á venjulegu máli.

Flögg

Samsvaranir
#StaðaSamsvörunHópar

Skýring á mynstri

    Hvernig á að nota regex-prófarann

    1. Sláðu mynstrið inn í Regluleg segð, án skástrikanna í kring. Skástrikin og virku flöggin birtast umhverfis reitinn, eins og í /mynstur/g.
    2. Hakaðu við þau Flögg sem þú þarft: g (global), i (hunsa há- og lágstafi), m (multiline), s (dotAll), u (unicode) eða y (sticky).
    3. Límdu textann sem á að leita í inn í Prófunartexti. Samsvaranir eru litaðar um leið og þú slærð inn og taflan telur upp hverja samsvörun með stöðu hennar og söfnunarhópum.
    4. Til að prófa útskiptingu skaltu fylla út Útskipting. Reiturinn Niðurstaða eftir útskiptingu sýnir textann með hverri samsvörun skipt út, tilbúinn til afritunar.
    5. Lestu Skýring á mynstri til að athuga hvað hver hluti regex-ins gerir. Veistu ekki hvar á að byrja? Smelltu á Hlaða dæmi.

    Hvað prófarinn sýnir

    • Litaðar samsvaranir: hver samsvörun í prófunartextanum er merkt, þannig að þú sérð í fljótu bragði hvað næst og hvað ekki.
    • Samsvörunartafla: númer hverrar samsvörunar, staða hennar (stafabil frá upphafi, talið frá 0), samsvarandi texti og gildi hvers söfnunarhóps. Nefndir hópar eins og (?<year>\d{4}) birtast undir nafni sínu og hópar sem tóku ekki þátt í samsvöruninni eru sýndir sem „(ekki samsvörun)“. Fyrstu 1 000 samsvaranirnar eru taldar upp.
    • Útskipting: útskiptingartextinn notar JavaScript-málskipan: $1 eða $2 fyrir númeraða hópa, $<name> fyrir nefnda hópa, $& fyrir alla samsvörunina og $$ fyrir bókstaflegt dollaramerki. Án g flaggsins er aðeins fyrsta samsvörunin skipt út.
    • Skýring: mynstrið er brotið í tákn (bókstaflegur texti, stafamengi, akkeri, hópar, endurtekningartákn, lookaround, tilvísanir í hópa), hvert með stuttri lýsingu. Hreiðraðir hópar eru inndregnir, sem gerir löng mynstur mun auðveldari í yfirferð.

    Flöggin í stuttu máli

    Flagg Áhrif
    g Finnur allar samsvaranir í stað þess að stöðvast við þá fyrstu
    i Hunsar muninn á há- og lágstöfum
    m ^ og $ samsvara upphafi og enda hverrar línu
    s . passar líka við línuskil
    u Full Unicode-ham: \u{…}, \p{…} og emoji meðhöndluð sem stakir stafir
    y Sticky: hver samsvörun verður að byrja nákvæmlega þar sem sú fyrri endaði

    Catastrophic backtracking

    Sum mynstur taka veldisvaxandi tíma á texta sem næstum því samsvarar. Klassíska dæmið er (a+)+$ prófað á langri runu af a á eftir b: vélin reynir allar leiðir til að skipta a-unum milli endurtekningartáknanna tveggja áður en hún gefst upp. Þetta vandamál, þekkt sem ReDoS, hefur fellt raunverulegar vefsíður.

    Verkfærið ver vafrann þinn á þrjá vegu. Samsvörunin keyrir í bakgrunnsvinnuferli sem er stöðvað eftir 1,5 sekúndur; prófunartextinn er takmarkaður við 100 000 stafi; og skýringin varar þig við þegar endurtekinn hópur inniheldur annað opið endurtekningartákn. Þegar mynstur rennur út á tíma skaltu endurskrifa það þannig að hver stafur samsvari aðeins á einn hátt, til dæmis a+$ í stað (a+)+$.

    Algengar spurningar

    Hvaða regex-bragð notar verkfærið?

    Það notar JavaScript-vél (ECMAScript) vafrans þíns, nákvæmlega eins og new RegExp() og String.prototype.replace() gera í kóðanum þínum. Mest af málskipaninni er sameiginlegt með PCRE, Python og Java, en sumir eiginleikar eru ólíkir: eignarleg endurtekningartákn og atómískir hópar eru ekki til í JavaScript, og lookbehind er stutt í öllum núverandi vöfrum.

    Af hverju finnur mynstrið mitt aðeins eina samsvörun?

    g flaggið er óvirkt. Án þess stöðvast JavaScript eftir fyrstu samsvörun og útskiptingin breytir aðeins henni.

    Hvernig passa ég við bókstaflegan punkt, hornklofa eða spurningarmerki?

    Umritaðu það með bakstrik: \., \[, \?. Skýringin sýnir umrituð tákn sem „(umritaður)“ svo þú getir athugað.

    Er textinn minn sendur eitthvað?

    Nei. Mynstrið og textinn eru aðeins unnin í vafranum þínum, sem gerir verkfærið öruggt fyrir logskrár eða gögn sem innihalda persónuupplýsingar.

    Af hverju er staðan önnur en dálkurinn í ritlinum mínum?

    Stöður telja stafi frá 0, yfir allar línur, eins og match.index í JavaScript. Línuskil teljast sem einn stafur og emoji utan Basic Multilingual Plane telst sem tveir.