JavaScript ရှိ Regular Expressions များတွင် Non-capturing Groups များ

ကွင်းစကွင်းပိတ် ( ) များသည် အလုပ်နှစ်မျိုးလုပ်သည် - �ာလုံးများ အုပ်စုဖွဲ့ခြင်းနှင့် အုပ်စု (capturing group) အဖြစ် သိုလှောင်ခြင်းတို့ ဖြစ်ပါသည်။ အုပ်စုဖွဲ့ချင်ပေမယ့် သိုလှောင်စရာ (capture) မလိုချင်ရင် ဘယ်လိုလုပ်မလဲ? ဒီပြဿနာအတွက် အထူးဖြေရှင်းချက် non-capturing groups (?: ) ကို တီထွင်ထားသည် - ၎င်းတို့သည် အုပ်စုဖွဲ့ပေးသော်လည်း သိုလှောင်စရာအဖြစ် မသိမ်းဆည်းပါ။

ဥပမာ

အောက်ပါဥပမာတွင် ပထမကွင်းစကွင်းပိတ်များသည် အုပ်စုဖွဲ့ရန်အတွက် လိုအပ်ပြီး ဒုတိယကွင်းများသည် အုပ်စုအဖြစ်သိုလှောင်ရန် လိုအပ်ပါသည်။ သို့သော် ကွင်းနှစ်မျိုးစလုံးသည် အချက်အလက်များကို အုပ်စုအဖြစ် သိမ်းဆည်းပေးပါသည်။

javascriptlet str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);

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

javascriptconsole.log(res[0]); // 'abab123' ကို ပြသမည်
console.log(res[1]); // 'ab' ကို ပြသမည်
console.log(res[2]); // '123' ကို ပြသမည်

ဥပမာ

ပထမကွင်းစကွင်းပိတ်များသည် အုပ်စုဖွဲ့ရန်သာလုပ်ပြီး အုပ်စုအဖြစ် မသိမ်းဆည်းစေရန် ပြုလုပ်ကြည့်ရအောင်။

javascriptlet str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);

ရလဒ်အနေဖြင့် ပထမအုပ်စုတွင် ကျွန်ုပ်တို့၏ ဂဏန်းများ ရှိလာမည်။

javascriptconsole.log(res[1]); // '123' ကို ပြသမည်