Tatlo sa anim na flag ang madalas na hindi maintindihan, kaya nakasulat sila sa pahina.
Ang hindi pinapatugma ng tuldok ang newline maliban kung nakabukas ang s. Ang inaabot ng karamihan ay m — pero ibang bagay iyon: binabago nito ang kahulugan ng ^ at $. Iyan ang pinakakaraniwang dahilan kung bakit humihinto ang pattern sa dulo ng linya.
Ang grupong hindi lumahok ay undefined, hindi blangko. Sa (a)|(b) laban sa b, hindi lumahok ang unang grupo — at ang tester na nagpi-print ng blangko doon ay nagsasabi ng mali. Doon mismo nakatira ang karamihan ng pagkalito sa isang pattern.
At ang catastrophic backtracking ay hindi mapipigilan dito. Walang paraan sa JavaScript para putulin ang tumatakbong pagtutugma. Ang totoo: tumatakbo ito sa browser MO, kaya ang pinakamasama ay mag-freeze ang tab na ito.
Dahil hindi tinatamaan ng tuldok ang bagong linya maliban kung nakatakda ang s flag. Ang m ang inaabot ng marami, at ibang bagay iyon — binabago ng m kung ano ang ibig sabihin ng ^ at $, kaya tumatama sila sa bawat line break at hindi lang sa dulo ng buong teksto. Kung gusto mong tumawid ang tuldok sa bagong linya, ang s ang gusto mo.
Kapag walang g ay ang unang tinamaan lang ang iniuulat ng pattern — iyon ang ibig sabihin ng hindi pandaigdig at hindi limitasyon ng pahinang ito. Kapag may g ay makukuha mo ang lahat. Mahalaga rin ito sa pagpapalit: ang hindi pandaigdig na replace ay binabago ang unang paglitaw at iniiwan ang iba.
Dahil talagang hindi ito lumahok. Sa pattern na tulad ng (a)|(b) na itinapat sa b, hindi kailanman lumahok ang grupo 1, at undefined ang halaga nito at hindi blangkong string. Karamihan sa tester ay walang inililimbag doon, na nagmumungkahing tumama ito sa kawalan — iba at nakakalito iyon. Kadalasan ay dito talaga nakatira ang pagkalito tungkol sa isang pattern.
Na kayang tamaan ng pattern mo ang wala, kaya tumatama ito sa bawat puwesto sa pagitan ng mga karakter. Kadalasan ay quantifier na dapat sanang + ang naging *: tumatama ang \d* sa blangkong string kahit saan, samantalang kailangan ng \d+ ng kahit isang digit. Bihira itong gusto ninuman at madaling hindi mapansin, kaya sinasabi ito ng pahina.
Oo. Ang pattern na may quantifier sa loob ng isa pang quantifier — ang hugis ng (a+)+ — ay puwedeng maging exponential ang tagal sa input na halos tumatama. Walang inaalok ang JavaScript na paraan para putulin ang tumatakbong pagtutugma, kaya walang tool na tunay na makakapigil dito. Nililimitahan ng pahinang ito ang input, nililimitahan ang listahan ng tinamaan, at nagbababala kapag nakilala ang hugis. Sa browser mo ito tumatakbo, kaya ang pinakamasama ay ang pag-freeze ng tab na ito at hindi ang pagbagsak ng server.
Kung JavaScript ang code mo, oo — ginagamit nito ang sariling RegExp ng browser. Tunay na nagkakaiba ang ibang wika: nagkakaiba-iba ang lookbehind, ang anyo ng named group, ang possessive quantifier at ang ibig sabihin ng \b sa paligid ng letrang hindi ASCII. Subukin sa engine na talagang pagtatakbuhan mo bago umasa sa isang pattern.
No. Everything is matched in your browser and nothing is transmitted or stored.
Ang m at s ang madalas na pinagpapalit. Magkaiba sila ng trabaho.
Ang (a+)+ — quantifier sa loob ng quantifier — ay puwedeng maging exponential sa input na halos tumutugma. Binabalaan ito ng pahina at hindi tinatanggihan: baka tama naman ito sa input na hawak mo. Palatandaan ito, hindi garantiya.
Runs in your browser using its own RegExp engine, so results match JavaScript. Other languages differ on lookbehind, named groups and word boundaries. A pattern nesting quantifiers can take exponential time and no tool can interrupt it — the warning is a hint, not a guarantee. Walang ipinapadala sa mga server namin ang tina-type mo rito — sa browser mo tumatakbo nang buo ang pagkuwenta.