Utilia

Regex Tester

Subukan nang live ang mga JavaScript regular expression: may naka-highlight na match, capture group, pagpapalit at paliwanag ng bawat token.

Mga flag

Mga match
#PosisyonMatchMga group

Paliwanag ng pattern

    Paano gamitin ang regex tester

    1. I-type ang iyong pattern sa Regular expression, nang walang nakapaligid na slash. Ipinapakita sa paligid ng field ang mga slash at ang mga aktibong flag, gaya ng /pattern/g.
    2. Sa Mga flag, i-tick ang kailangan mo: g (global), i (ignore case), m (multiline), s (dotAll), u (unicode) o y (sticky).
    3. I-paste ang text na hahanapan sa Test text. Naka-highlight ang mga match habang nagta-type ka, at inililista ng talahanayan ang bawat match kasama ang posisyon at mga capture group nito.
    4. Para subukan ang pagpapalit, punan ang Kapalit. Ipinapakita ng kahong Resulta pagkatapos ng pagpapalit ang text na napalitan ang bawat match, handang kopyahin.
    5. Basahin ang Paliwanag ng pattern para suriin kung ano ang ginagawa ng bawat bahagi ng regex mo. Hindi sigurado kung saan magsisimula? I-click ang Mag-load ng halimbawa.

    Ano ang ipinapakita ng tester

    • Mga naka-highlight na match: namamarkahan ang bawat match sa test text, kaya makikita mo agad kung ano ang nasalo at ano ang nalampasan.
    • Talahanayan ng mga match: ang bilang ng bawat match, ang posisyon nito (offset ng karakter mula sa simula, nagsisimula sa 0), ang tinugunang text, at ang halaga ng bawat capture group. Lumalabas sa ilalim ng pangalan nila ang mga named group gaya ng (?<year>\d{4}), at ipinapakitang “(hindi natugunan)” ang mga group na hindi nakasali sa match. Inililista ang unang 1,000 match.
    • Kapalit: gumagamit ng JavaScript syntax ang text na kapalit: $1 o $2 para sa mga numbered group, $<name> para sa mga named group, $& para sa buong match, at $$ para sa literal na dollar sign. Kung walang flag na g, ang unang match lang ang papalitan.
    • Paliwanag: hinahati ang pattern sa mga token (literal na text, character class, anchor, group, quantifier, lookaround, backreference), bawat isa ay may maikling paglalarawan. May indent ang mga nested na group, kaya mas madaling suriin ang mahahabang pattern.

    Ang mga flag sa madaling sabi

    Flag Epekto
    g Hinahanap ang lahat ng match sa halip na huminto sa una
    i Binabalewala ang pagkakaiba ng uppercase at lowercase
    m Tumutugma ang ^ at $ sa simula at dulo ng bawat linya
    s Tinutugunan din ng . ang mga line break
    u Buong Unicode mode: \u{…}, \p{…} at ang emoji ay hinahawakan bilang iisang karakter
    y Sticky: dapat magsimula ang bawat match eksakto kung saan nagtapos ang nauna

    Catastrophic backtracking

    May mga pattern na tumatagal nang exponential sa text na halos tumutugma. Ang klasikong halimbawa ay ang (a+)+$ na sinubukan sa mahabang hanay ng a na sinusundan ng b: sinusubukan ng engine ang bawat paraan ng paghahati sa mga a sa pagitan ng dalawang quantifier bago sumuko. Ang problemang ito, na kilala bilang ReDoS, ay nagpabagsak na ng mga totoong website.

    Pinoprotektahan ng tool na ito ang iyong browser sa tatlong paraan. Tumatakbo ang pagtutugma sa background worker na itinitigil pagkatapos ng 1.5 segundo; limitado sa 100,000 karakter ang test text; at nagbibigay ng babala ang paliwanag kapag may isa pang open-ended na quantifier sa loob ng inuulit na group. Kapag nag-timeout ang pattern, isulat itong muli para iisang paraan lang ang pagtutugma sa bawat karakter, halimbawa a+$ sa halip na (a+)+$.

    Mga madalas itanong

    Anong regex flavor ang ginagamit ng tool na ito?

    Ginagamit nito ang JavaScript (ECMAScript) engine ng iyong browser, eksakto gaya ng gagawin ng new RegExp() at String.prototype.replace() sa code mo. Karamihan ng syntax ay kapareho ng PCRE, Python at Java, pero may ilang tampok na magkaiba: walang possessive quantifier at atomic group sa JavaScript, at sinusuportahan ang lookbehind sa lahat ng kasalukuyang browser.

    Bakit isang match lang ang nahahanap ng pattern ko?

    Naka-off ang flag na g. Kung wala ito, humihinto ang JavaScript pagkatapos ng unang match, at ang pagpapalit ay isa lang ang babaguhin.

    Paano tutugma sa literal na tuldok, bracket o question mark?

    I-escape ito gamit ang backslash: \., \[, \?. Ipinapakita ng paliwanag ang mga naka-escape na karakter bilang “(naka-escape)” para masuri mo.

    Ipinapadala ba kahit saan ang text ko?

    Hindi. Ang pattern at ang text ay pinoproseso lang sa iyong browser, kaya ligtas ang tool na ito para sa mga log file o data na may personal na impormasyon.

    Bakit iba ang posisyon sa column sa editor ko?

    Binibilang ng mga posisyon ang mga karakter mula 0, sa lahat ng linya, gaya ng match.index ng JavaScript. Isang karakter ang bilang ng line break, at dalawa ang bilang ng emoji na nasa labas ng Basic Multilingual Plane.