Teknobench

Ittestjar tar-Regex

Ittestja espressjonijiet regolari JavaScript live b’taqbiliet enfasizzati, gruppi, sostituzzjoni u spjegazzjoni b’lingwaġġ sempliċi ta’ kull token.

Flags

Taqbiliet
#PożizzjoniTaqbilaGruppi

Spjegazzjoni tal-mudell

    Kif tuża l-ittestjar tar-regex

    1. Ikteb il-mudell tiegħek f’Espressjoni regolari, mingħajr is-slashes ta’ madwar. Is-slashes u l-flags attivi jidhru madwar il-qasam, bħal /pattern/g.
    2. Immarka l-Flags li teħtieġ: g (globali), i (injora l-każ), m (multiline), s (dotAll), u (unicode) jew y (sticky).
    3. Waħħal it-test li trid tfittex f’Test ta’ prova. It-taqbiliet jiġu enfasizzati hekk kif tikteb, u t-tabella telenka kull taqbila bil-pożizzjoni u l-gruppi li qabdet.
    4. Biex tipprova sostituzzjoni, imla Sostituzzjoni. Il-kaxxa Riżultat wara s-sostituzzjoni turi t-test b’kull taqbila sostitwita, lest biex tikkopjah.
    5. Aqra l-Spjegazzjoni tal-mudell biex tiċċekkja x’jagħmel kull biċċa mir-regex tiegħek. M’intix ċert minn fejn tibda? Ikklikkja Tella’ eżempju.

    X’turi l-għodda

    • Taqbiliet enfasizzati: kull taqbila fit-test hija mmarkata, biex tara minn ewwel x’jinqabad u x’jiġi nieqes.
    • Tabella tat-taqbiliet: in-numru ta’ kull taqbila, il-pożizzjoni tagħha (offset tal-karattri mill-bidu, għadd minn 0), it-test li qabbel, u l-valur ta’ kull grupp li jaqbad. Gruppi bl-isem bħal (?<year>\d{4}) jidhru bl-isem tagħhom, u gruppi li ma ħadux sehem fit-taqbila jintwerew bħala “(ma qabbilx)”. L-ewwel 1,000 taqbila huma elenkati.
    • Sostituzzjoni: it-test tas-sostituzzjoni juża s-sintassi JavaScript: $1 jew $2 għall-gruppi nnumerati, $<name> għall-gruppi bl-isem, $& għat-taqbila kollha, u $$ għal sinjal tad-dollaru litterali. Mingħajr il-flag g, tiġi sostitwita biss l-ewwel taqbila.
    • Spjegazzjoni: il-mudell jinqasam f’tokens (test litterali, klassijiet ta’ karattri, ankri, gruppi, kwantifikaturi, lookarounds, backreferences), kull wieħed b’deskrizzjoni qasira. Il-gruppi nested huma indentati, li jagħmel mudelli twal ħafna aktar faċli biex jiġu rieżaminati.

    Il-flags fil-qosor

    Flag Effett
    g Isib it-taqbiliet kollha minflok ma jieqaf fl-ewwel waħda
    i Jinjora d-differenza bejn ittri kapitali u żgħar
    m ^ u $ jaqblu mal-bidu u t-tmiem ta’ kull linja
    s . jaqbel ukoll ma’ qatgħat tas-linja
    u Mod Unicode sħiħ: \u{…}, \p{…} u emoji mmaniġġjati bħala karattri singoli
    y Sticky: kull taqbila trid tibda eżatt fejn spiċċat l-preċedenti

    Catastrophic backtracking

    Xi mudelli jieħdu ħin esponenzjali fuq test li kważi jaqbel. L-eżempju klassiku huwa (a+)+$ ittestjat fuq sekwenza twila ta’ a segwita b’b: il-magna tipprova kull mod kif taqsam l-as bejn iż-żewġ kwantifikaturi qabel ma tċedi. Din il-problema, magħrufa bħala ReDoS, waqqgħet siti veri.

    L-għodda tipproteġi l-brawżer tiegħek b’tliet modi. It-tqabbil jaħdem f’background worker li jitwaqqaf wara 1.5 sekondi; it-test ta’ prova huwa limitat għal 100,000 karattru; u l-ispjegazzjoni twissik meta grupp ripetut fih kwantifikatur ieħor mhux limitat. Meta mudell jaqbeż il-ħin, erġa’ iktebu biex kull karattru jkun jista’ jitqabbel b’mod wieħed biss, per eżempju a+$ minflok (a+)+$.

    Mistoqsijiet frekwenti

    Liema flavor ta’ regex tuża din l-għodda?

    Tuża l-magna JavaScript (ECMAScript) tal-brawżer tiegħek, eżattament kif jagħmlu new RegExp() u String.prototype.replace() fil-kodiċi tiegħek. Il-biċċa l-kbira tas-sintassi hija kondiviża ma’ PCRE, Python u Java, iżda xi karatteristiċi jvarjaw: il-kwantifikaturi possessivi u l-gruppi atomiċi ma jeżistux f’JavaScript, u l-lookbehind huwa appoġġjat fil-brawżers kurrenti kollha.

    Għaliex il-mudell tiegħi jsib taqbila waħda biss?

    Il-flag g mhix mixgħula. Mingħajrha, JavaScript jieqaf wara l-ewwel taqbila, u s-sostituzzjoni tibdel biss dik waħda.

    Kif nqabbel punt, parentesi kwadra jew marka ta’ mistoqsija litterali?

    Aħrabha b’backslash: \., \[, \?. L-ispjegazzjoni turi l-karattri maħrubin bħala “(escaped)” biex tkun tista’ tiċċekkja.

    It-test tiegħi jintbagħat imkien?

    Le. Il-mudell u t-test jiġu pproċessati biss fil-brawżer tiegħek, u dan jagħmel l-għodda sigura għal fajls tal-logs jew data li fiha informazzjoni personali.

    Għaliex il-pożizzjoni hija differenti mill-kolonna fl-editur tiegħi?

    Il-pożizzjonijiet jgħoddu l-karattri minn 0, fuq il-linji kollha, kif jagħmel match.index ta’ JavaScript. Il-qatgħat tas-linja jgħoddu bħala karattru wieħed, u emoji barra mill-Basic Multilingual Plane jgħodd bħala tnejn.