⊗jsSpRELAB 133 of 294 menu

JavaScript တွင် Lookahead နှင့် Lookbehind

တစ်ခါတစ်ရံ ဤကဲ့သို�့သော ပြဿနာမျိုးကို ဖြေရှင်းရန် လိုအပ်ပါသည်။ စာကြောင်း 'aaa' ကို ရှာ၍ '!' နှင့် အစားထိုးပါ။ သို့သော် 'aaa' ၏ နောက်တွင် 'x' ရှိမှသာ၊ ထို 'x' ကိုမူ အစားမထိုးရပါ။ ဤပြဿနာကို 'တိုက်ရိုက်' ဖြေရှင်းရန် ကြိုးစားပါက အောင်မြင်မည် မဟုတ်ပါ။

'aaax baaa'.replace(/aaax/g, '!'); // '! baaa' ကို ပြန်ပေးမည်၊ '!x baaa' ကို မျှော်လင့်ထားသည်။

Lookahead

ဤပြဿနာကို ဖြေရှင်းရန် 'x' ကို အစားမထိုးရန် ပြောဆိုနိုင်သည့် နည်းလမ်း လိုအပ်ပါသည်။ (?= ) ဟူသော အထူးကွင်းစကွင်းပိတ်များကို အသုံးပြု၍ ဤသို့ပြုလုပ်နိုင်ပြီး၊ ၎င်းတို့သည် ကြည့်ရုံသာကြည့်၍ မယူဆောင်သွားပါ။

ဤကွင်းများကို အပြုသဘော Lookahead ဟုခေါ်သည်။ အပြုသဘော - အဘယ်ကြောင့်ဆိုသော် 'x' (ကျွန်ုပ်တို့အမှု၌) ရှိရမည် - ထိုအခါမှသာ အစားထိုးခြင်း ဖြစ်ပေါ်မည်။

ကျွန်ုပ်တို့၏ ပြဿနာကို ဖြေရှင်းရန် ဤကွင်းများကို အသုံးပြုကြည့်ပါစို့။

'aaax aaab'.replace(/aaa(?=x)/g, '!'); // '!x aaab' ကို ပြန်ပေးမည်

အပျက်သဘော Lookahead လည်းရှိသည် - (?! ) - ၎င်းသည် ဆန့်ကျင်ဘက်အနေနှင့် တစ်စုံတစ်ရာ မရှိရမည်ဟု ပြောဆိုသည်။ နောက်ဥပမာတွင်၊ 'aaa' ၏ နောက်တွင် 'x' မရှိမှသာ အစားထိုးခြင်း ဖြစ်ပေါ်မည်။

'aaax aaab'.replace(/aaa(?!x)/g, '!'); // 'aaax !b' ကို ပြန်ပေးမည်

Lookbehind

အလားတူပင် အပြုသဘော Lookbehind ရှိသည် - (?<= )။ နောက်ဥပမာတွင် 'aaa' ၏ ရှေ့တွင် 'x' ရှိမှသာ အစားထိုးခြင်း ဖြစ်ပေါ်မည်။

'xaaa'.replace(/(?<=x)aaa/g, '!'); // 'x!' ကို ပြန်ပေးမည်

ထို့အပြင် အပျက်သဘော Lookbehind လည်းရှိသည် - (?<! )။ နောက်ဥပမာတွင် 'aaa' ၏ ရှေ့တွင် 'x' မရှိမှသာ အစားထိုးခြင်း ဖြစ်ပေါ်မည်။

'baaa'.replace(/(?<!x)aaa/g, '!'); // 'b!' ကို ပြန်ပေးမည်

လက်တွေ့လေ့ကျင့်ခန်းများ

ဖန်ရှင်အမည်များ ပါဝင်သော စာကြောင်းတစ်ခု ရှိသည်။

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

စာကြောင်းမှ ဖန်ရှင်အမည်များ ပါဝင်သော Array တစ်ခုရယူပါ။

tag တစ်ခုပါဝင်သော စာကြောင်းတစ်ခု ရှိသည်။

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

ထို tag ၏ attribute အမည်များ ပါဝင်သော Array တစ်ခုရယူပါ။

ကိန်းရှင်များ ပါဝင်သော စာကြောင်းတစ်ခု ရှိသည်။

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

ရှေ့တွင် ဒေါ်လာသင်္ကေတ ရှိသော စာကြောင်းခွဲများကို ရယူပါ။

မြန်မာ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ဝက်ဘ်ဆိုက် လုပ်ဆောင်ခြင်း၊ ဆန်းစစ်လေ့လာခြင်းနှင့် ပုဂ္ဂလိကပြုပြင်ခြင်းအတွက် ကျွန်ုပ်တို့သည် cookie များကို အသုံးပြုပါသည်။ ဒေတာများကို ပြုပြင်ခြင်းသည် ကိုယ်ရေးကိုယ်တာ မူဝါဒအတိုင်း ဖြစ်ပါသည်။
အားလုံးလက်ခံရန် ပြင်ဆင်ရန် ငြင်းပယ်ရန်