Ittestjar tar-Regex
Ittestja espressjonijiet regolari JavaScript live b’taqbiliet enfasizzati, gruppi, sostituzzjoni u spjegazzjoni b’lingwaġġ sempliċi ta’ kull token.
| # | Pożizzjoni | Taqbila | Gruppi |
|---|
Spjegazzjoni tal-mudell
Twissija: grupp ripetut fih kwantifikatur ieħor mhux limitat, per eżempju (a+)+. Mudelli bħal dawn jistgħu jieħdu ħin esponenzjali fuq test li kważi jaqbel (catastrophic backtracking).
Kif tuża l-ittestjar tar-regex
- 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. - Immarka l-Flags li teħtieġ:
g(globali),i(injora l-każ),m(multiline),s(dotAll),u(unicode) jewy(sticky). - 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.
- Biex tipprova sostituzzjoni, imla Sostituzzjoni. Il-kaxxa Riżultat wara s-sostituzzjoni turi t-test b’kull taqbila sostitwita, lest biex tikkopjah.
- 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:
$1jew$2għall-gruppi nnumerati,$<name>għall-gruppi bl-isem,$&għat-taqbila kollha, u$$għal sinjal tad-dollaru litterali. Mingħajr il-flagg, 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.
Għodod relatati
- Formatter u validatur tal-JSON Formatter u validatur tal-JSON b’xejn li jibbewtifika, jimminimizza u jiċċekkja l-JSON fil-brawżer tiegħek, b’żbalji tas-sintassi bil-linja u l-kolonna.
- Kodifikatur u Dekodifikatur tal-URL Kodifikatur u dekodifikatur tal-URL b’xejn. Għamel percent-encode ta’ parametri tal-query jew URLs sħaħ, iddekodifika sekwenzi %XX u ittratta + bħala spazju.
- Ġeneratur tal-hash Iġġenera hashes MD5, SHA-1, SHA-256 u SHA-512 ta’ test jew fajls ta’ kwalunkwe daqs, u vverifika checksums. Kollox jaħdem fil-brawżer tiegħek.