Regex inafanya kazi vipi kwenye kivinjari chako?
Kila muda wa kufanya kazi wa JavaScript unasafirisha injini ya asili ya misemo ya kawaida — new RegExp(pattern, flags) hukusanya muundo wako, kisha mbinu kama String.prototype.match, String.prototype.replace, na RegExp.prototype.exec zinaiendesha dhidi ya mfuatano wowote wa ingizo. Kipimaji hiki kinazungushia injini hiyo kwenye kiolesura ili uweze kuhariri, kuendesha, na kukagua mifumo bila kuondoka kwenye kivinjari chako. Hakuna unachoweka — muundo, bendera, mfuatano wa majaribio, au mbadala — unatumwa kwenye mtandao.
Kipimaji cha regex kinafanya kazi vipi?
Mfumo ni hatua chache fupi, zote zinazofanya kazi upande wa mteja kwa kila kibonyezo (iliyocheleweshwa hadi 150 ms ili uandishi ubaki wa mtiririko):
- Mwili wa muundo wako unasomwa kutoka kwa ingizo hapo juu (bila vitenganishi vya
/mwanzo au mwisho — ni mapambo). Vidonge vya bendera vilivyochaguliwa vinaungwa pamoja katika mfuatano wa bendera kamagiaugimsuy. new RegExp(patternBody, flags)hukusanya muundo. Ikiwa injini inatupaSyntaxError(k.m. mabano yasiyofanana au kutoroka batili), ujumbe unaonyeshwa juu ya mfuatano wa majaribio na orodha ya mechi inafutwa. Hitilafu ya kukusanya nierr.messagehalisi kutoka V8 / SpiderMonkey / JavaScriptCore hivyo inafanana na unachoonekana kwenye DevTools.- Kwa orodha ya mechi, kipimaji kila wakati kinaorodhesha kwa bendera ya kimataifa ya bandia — kwa hivyo hata ukizima
g, orodha bado inaonyesha kila mechi. Ulinzi wa kawaida wa mechi ya upana sufuri (if (m.index === rx.lastIndex) rx.lastIndex++) unazuia kitanzi kisizunguke kwenye mifumo inayooanisha mfuatano tupu. Hali ya Kubadilisha inazingatia seti yako halisi ya bendera kwa hivyo$&inafanya kazi sawa naString.prototype.replace. - Kati ya kila mzunguko kipimaji kinakagua
performance.now() - startna kuacha mara 50 ms zinapita. Hii inalinda dhidi ya kurudi nyuma kwa maafa kwenye maingizo kama(a+)+$dhidi ya mlolongo mrefu waa— kichupo kingekuwa kikitulia. Ulinzi ni wa bidii nzuri: muundo wenye tatizo wa mechi moja bado unaweza kutumia muda ndani ya simu moja yaexec. Ikiwa hiyo itatokea, onyesha upya kichupo na uandike upya muundo na kipimo cha kiasi cha kutamaa kidogo au cha mali (k.m.[^x]*x). - Mfuatano wa majaribio unagawanywa katika sehemu kwa anuwai ya kila mechi na sehemu zinazooanishwa zimefungwa katika vipengele vya
<mark class="rx-match rx-cap-N">, ambapoNinazunguka kati ya rangi sita za rangi ili mechi zinazofuatana ziwe rahisi kutofautisha kwa mtazamo. Vikundi vilivyopewa nambari vya kila mechi (m[1],m[2], …) na vikundi vilivyopewa majina (m.groups) vinavyonyeshwa kama safu zenye lebo chini yake; ikiwa bendera yadimewekwa, viashiria vya[mwanzo, mwisho]kwa kila kikundi vinaonyeshwa pia.
Kwa nini kutumia kipimaji hiki cha regex?
- Faragha: kila muundo, mfuatano wa majaribio, na mbadala unafanya kazi kwenye kivinjari chako ukitumia injini ya asili ya JavaScript RegExp. Hakuna kinachoondoka kwenye kichupo — muhimu wakati ingizo ni kumbukumbu ya mteja, muundo wa msimbo wa kuvuja, au chochote kingine ambacho hutataka kubandika kwenye uwanja wa mchezo wa SaaS iliyowekwa.
- Ladha ya kweli: kipimaji kinaonyesha injini halisi ya regex ambayo Node.js, Chrome, Safari, Firefox, na kila kithibitishaji cha fomu cha msingi wa kivinjari kinaendesha. Hakuna safu ya tafsiri ya ladha ya Perl kuficha tofauti ndogo — inayofanya kazi hapa inafanya kazi kwenye msimbo wako.
- Utatuzi wa vikundi vya kunasa na vya majina: kila kikundi chenye nambari (
$1,$2, …) na kikundi chenye jina ($<year>) kinaonyeshwa kwa kila mechi ili uweze kujenga mchakato wa kuchakata na kusoma nafasi bila kukisia. Hali ya Kubadilisha inakuruhusu kuchanganya vikundi kwa uhuru —$2-$1inabadilisha nafasi mbili za kwanza,$<name>inaweka nafasi yenye jina ndani, na$&inarudia mechi nzima. - Ulinzi wa kurudi nyuma kwa maafa: dari ya 50 ms kwenye orodha inakomisha mifumo yenye matatizo kama
(a+)+$kabla haijatia kichupo baridi. Unaona hitilafu ya maelezo badala ya kivinjari kilichozimika, na ukurasa unapona mara moja.
Matumizi ya kawaida ya kipimaji cha regex ni yapi?
Misemo ya kawaida inaonekana kwenye uendelezaji wa wavuti, usalama, na kazi ya data — kipimaji hiki kinalenga matumizi ya kawaida zaidi:
- Uthibitisho wa fomu: fanya muundo wa barua pepe, simu, au msimbo wa posta, bandika maingizo ya mfano kwenye mfuatano wa majaribio, na thibitisha kila kesi chanya inaoanishwa na kila kesi hasi haioani kabla ya kuwasilisha muundo kwa msimbo wa uzalishaji.
- Kukwangua kumbukumbu: bandika kipande cha matokeo ya NGINX, programu, au kumbukumbu ya ukaguzi, andika muundo wenye vikundi vya majina kwa sehemu unazozingatia (
(?<ip>…) (?<path>…)), na soma nafasi zilizochukuliwa kwa kila mechi ili kuthibitisha mchakato wako wa kuchakata ni sahihi. - Kutafuta na kubadilisha kwa marekebisho: tumia Hali ya Kubadilisha kuandika upya vitambulishi kwenye kipande —
(\w+)\.set(\w+)\(→$1.$2 =hubadilisha wito wa kupata kuwa ugawaji wa mali, na muhtasari wa moja kwa moja unaonyesha matokeo kabla ya kuifanya kwenye codemod.
Mfano wa regex unakaa vipi?
Chukua muundo (\d{4})-(\d{2})-(\d{2}) na bendera ya g, ukiendesha dhidi ya mfuatano wa majaribio release 2025-11-15, prerelease 2026-05-25. Injini inapata mechi mbili. Mechi ya kwanza ni 2025-11-15 na kikundi 1 = 2025, kikundi 2 = 11, kikundi 3 = 15. Mechi ya pili ni 2026-05-25 na umbo sawa la kikundi. Katika Hali ya Kubadilisha, kiolezo cha mbadala $3/$2/$1 kinaandika upya tarehe zote mbili kwa 15/11/2025 na 25/05/2026 — ubadilishaji wa muundo mmoja wa ISO-hadi-DMY unaoweza kuthibitisha kwa macho kabla ya kuweka muundo kwenye hati.
Tumia kipimaji hiki kama njia ya haraka kwa kazi yoyote ya regex — kujenga, kutatua, au kuandika upya mifumo. Kila kitu kinafanya kazi ndani ya kivinjari; hakuna kilichorekodiwa; injini ya regex ni chochote ambacho kivinjari chako kinasafirisha, kwa hivyo tabia inafanana na msimbo wa uzalishaji utakaoona wakati wa utekelezaji.