JavaScript တွင် ရယ်ဂျူလာအသုံးအနှုန်း၏ လောဘကို ကန့်သတ်ခြင်း
ရယ်ဂျူလာအသုံးအနှုန်းများသည် နဂိုအားဖြင့် လောဘကြီး ဖြစ်သည်။ ဆိုလိုသည်မှာ ၎င်းတို့သည် အများဆုံးဖြစ်နိုင်သော အက္ခရာအရေအတွက်ကို ဖမ်းယူကြသည်။ ဥပမာတစ်ခုဖြင့် လေ့လာကြည့်ကြပါစို့။ ကျွန်ုပ်တို့တွင် အောက်ပါစာကြောင်းရှိသည်ဆိုပါစို့:
let str = 'aeeex zzz x kkk';
ဤစာကြောင်းထဲတွင် ကျွန်ုပ်တို့သည် စာကြောင်းအပိုင်း
'aeeex' ကို အောက်ပါပုံစံဖြင့် ရှာလိုသည်ဆိုပါစို့: အက္ခရာ
'a'၊ ၎င်းနောက် မည်သည့်အက္ခရာမဆို တစ်ကြိမ် သို့မဟုတ် ထို့ထက်များစွာ၊
၎င်းနောက် အက္ခရာ 'x'။
let res = str.replace(/a.+x/g, '!');
ရလဒ်အဖြစ် ကိန်းရှင်ထဲသို့ စာကြောင်း '! zzz x kkk'
ထည့်သွင်းမည်ဟု ကျွန်ုပ်တို့ မျှော်လင့်ပါသည်။ သို့သော်
မဟုတ်ပါ - ကိန်းရှင်ထဲသို့ စာကြောင်း
'! kkk' ဝင်ရောက်သွားပါသည်။
ပြဿနာအကုန်လုံးသည် ကျွန်ုပ်တို့၏ ရယ်ဂျူလာက အက္ခရာ
'a' မှ အက္ခရာ 'x' အထိ အက္ခရာအားလုံးကို
ရှာဖွေနေခြင်းကြောင့် ဖြစ်သည်။
သို့သော် ကျွန်ုပ်တို့၏ စာကြောင်းထဲတွင် အက္ခရာ 'x' နှစ်လုံးရှိနေပါသည်!
လောဘကြောင့် ရယ်ဂျူလာက နောက်ဆုံး 'x' အထိ ရှာဖွေပြီး
ကျွန်ုပ်တို့မျှော်လင့်သည်မဟုတ်သော အရာကို ဖမ်းယူမိသွားခြင်း ဖြစ်ပေါ်သည်။
ဟုတ်ပါသည်၊ မကြာခဏဆိုသလို ဤအပြုအမူသည် ကျွန်ုပ်တို့လိုအပ်သည့်အရာ ဖြစ်ပါသည်။ သို့သော် ဤအခြေအနေတွင်မူ ကျွန်ုပ်တို့သည် လောဘကို ပယ်ဖျက်ကာ ရယ်ဂျူလာကို ပထမဆုံး 'x' ကိုသာ ရှာဖွေရန် ပြောလိုပါသည်။
လောဘကို ကန့်သတ်ရန် ဖြစ်နိုင်ခြေအော်ပရေတာပြီးနောက် မေးခွန်းအမှတ်အသားကို ထားရှိရမည်:
let res = str.replace(/a.+?x/g, '!');
ဖြစ်နိုင်ခြေအော်ပရေတာအားလုံးတွင် လောဘကို ကန့်သတ်နိုင်သည်:
*၊ ?၊ နှင့် {}
- ဤသို့ဖြစ်သည်: *?၊ ?? နှင့် {}?။
အောက်ပါစာကြောင်းကို ပေးထားသည်:
let str = 'aba accca azzza wwwwa';
ရယ်ဂျူလာတစ်ခုကို ရေးပါ၊ ထိုရယ်ဂျူလာက အက္ခရာ 'a' များ
အနားတစ်ဖက်စီတွင် ရှိသော စာကြောင်းအားလုံးကို ရှာဖွေပြီး
တစ်ခုစီကို '!' နှင့် အစားထိုးမည်။
အက္ခရာ 'a' များကြားတွင် မည်သည့်အက္ခရာမဆို ရှိနိုင်သည် (အက္ခရာ
'a' မှလွဲ၍)။