⊗jsSpRELAB 133 of 294 menu

Uchunguzi wa Mtazamo Chanya na Hasifu katika Usanifu mara kwa mara wa JavaScript

Wakati mwingine tunahitaji kutatua tatizo la aina hii: pata mfumo wa herufi 'aaa' na ubadilishe kuwa '!', lakini tu ikiwa baada ya 'aaa' kuna 'x', na 'x' yenyewe usibadilishe. Tukijaribu kutatua tatizo hili 'moja kwa moja', hatutafanikiwa:

'aaax baaa'.replace(/aaax/g, '!'); // itarudi '! baaa', lakini tulitaka '!x baaa'

Uchunguzi Mbele

Ili kutatua tatizo, tunahitaji njia ya kusema kwamba 'x' haipaswi kubadilishwa. Hii inafanywa kwa kutumia mabano maalum (?= ), ambayo hutazama tu, lakini haichukui pamoja nayo.

Mabano haya yanaitwa uchunguzi chanya wa mbele. Chanya - kwa sababu 'x' (katika kesi yetu) lazima iwepo - ndipo tu badilisha litakalotokea.

Wacha tutumie mabano haya kutatua tatizo letu:

'aaax aaab'.replace(/aaa(?=x)/g, '!'); // itarudi '!x aaab'

Kuna pia uchunguzi hasifu wa mbele - (?! ) - kinyume chake, inasema kwamba kitu hakipaswi kuwepo. Katika mfano ufuatao, badilisha litatokea, tu ikiwa baada ya 'aaa' hakuna 'x':

'aaax aaab'.replace(/aaa(?!x)/g, '!'); // itarudi 'aaax !b'

Uchunguzi Nyuma

Vivyo hivyo kuna uchunguzi chanya wa nyuma - (?<= ). Katika mfano ufuatao badilisha litatokea, tu ikiwa kabla ya 'aaa' kuna 'x':

'xaaa'.replace(/(?<=x)aaa/g, '!'); // itarudi 'x!'

Na kuna pia uchunguzi hasifu wa nyuma - (?<! ). Katika mfano ufuatao badilisha litatokea, tu ikiwa kabla ya 'aaa' hakuna 'x':

'baaa'.replace(/(?<!x)aaa/g, '!'); // itarudi 'b!'

Matatizo ya Vitendo

Kuna mfumo wa herufi ulio na majina ya vitendakazi:

let str = 'func1() func2() func3()';

Pata orodha ya majina ya vitendakazi kutoka kwenye mfumo wa herufi.

Kuna mfumo wa herufi ulio na lebo:

let str = '<a href="" class="eee" id="zzz">';

Pata orodha ya majina ya sifa za lebo hii.

Kuna mfumo wa herufi ulio na vigeugeu:

let str = '$aaa $bbb $ccc xxxx';

Pata sehemu ndogo za mfumo wa herufi, ambazo kabla yake kuna alama ya dola.

hiuzkakkru