JavaScript regular expressions တွင် အထူးစာလုံးများကို escape လုပ်ခြင်း
အထူးစာလုံးတစ်လုံးသည် ၎င်းကိုယ်၎င်းကို ကိုယ်စားပြုရန် ကျွန်ုပ်တို့လိုချင်သည်ဟု ယူဆပါစို့။ ၎င်းအတွက် ထိုအထူးစာလုံးကို backslash ဖြင့် escape လုပ်ရန် လိုအပ်သည်။ ဥပမာများဖြင့် ကြည့်ကြပါစို့။
ဥပမာ
အောက်ပါဥပမာတွင် regular expression ရေးသားသူသည်
ရှာဖွေရန်ပုံစံသည် ဤသို့ဖြစ်စေလိုသည် - အက္ခရာ
'a'၊ ထို့နောက် အပေါင်းလက္ခဏာ '+'၊ ထို့နောက်
အက္ခရာ 'x'။ သို့သော်လည်း၊ ကုဒ်ရေးသူသည်
'+' သင်္ကေတကို escape မလုပ်ထားသဖြင့်
အမှန်တကယ်ရှာဖွေရန်ပုံစံသည် ဤသို့ဖြစ်နေသည်-
အက္ခရာ 'a' တစ်ကြိမ် သို့မဟုတ် တစ်ကြိမ်ထက်ပိုပြီး၊ ထို့နောက်
အက္ခရာ 'x'-
let str = 'a+x ax aax aaax';
let res = str.replace(/a+x/g, '!');
ရလဒ်အဖြစ် variable ထဲသို့ အောက်ပါအတိုင်း ရေးသွင်းမည်-
'a+x ! ! !'
ဥပမာ
ယခုတွင် ရေးသူသည် အပေါင်းလက္ခဏာကို backslash ဖြင့်
escape လုပ်ထားသည်။ ယခု ရှာဖွေရန်ပုံစံသည် လိုအပ်သလို
ဖြစ်နေပြီ- အက္ခရာ 'a'၊ ထို့နောက် အပေါင်းလက္ခဏာ
'+'၊ ထို့နောက် အက္ခရာ 'x'။
let str = 'a+x ax aax aaax';
let res = str.replace(/a\+x/g, '!');
ရလဒ်အဖြစ် variable ထဲသို့ အောက်ပါအတိုင်း ရေးသွင်းမည်-
'! ax aax aaax'
ဥပမာ
ဤဥပမာတွင် ပုံစံသည် ဤသို့ဖြစ်သည်- အက္ခရာ
'a'၊ ထို့နောက် ပုဒ်ဖြတ် '.'၊ ထို့နောက်
အက္ခရာ 'x'-
let str = 'a.x abx azx';
let res = str.replace(/a\.x/g, '!');
ရလဒ်အဖြစ် variable ထဲသို့ အောက်ပါအတိုင်း ရေးသွင်းမည်-
'! abx azx'
ဥပမာ
အောက်ပါဥပမာတွင် ရေးသူသည် ပုဒ်ဖြတ်ကို escape လုပ်ရန် မေ့နေပြီး မည်သည့် substring မဆို regular expression နှင့် ကိုက်ညီသွားသည်၊ အကြောင်းမှာ မည်သည့်စာလုံးကိုမဆို ကိုယ်စားပြုသော escape မလုပ်ထားသော ပုဒ်ဖြတ်ကြောင့်ဖြစ်သည်-
let str = 'a.x abx azx';
let res = str.replace(/a.x/g, '!');
ရလဒ်အဖြစ် variable ထဲသို့ အောက်ပါအတိုင်း ရေးသွင်းမည်-
'! ! !'
မှတ်ချက်
ပုဒ်ဖြတ်သည် ၎င်းကိုယ်၎င်းကို ကိုယ်စားပြုရမည့်အခါ backslash ကို မေ့သွားပါက - ၎င်းကို သတိမပြုမိနိုင်သည်ကို သတိပြုပါ-
'a.x'.replace(/a.x/g, '!'); // '!' ကို ပြန်ပေးမည်၊ ကျွန်ုပ်တို့လိုချင်သကဲ့သို့
မျက်မြင်အားဖြင့် မှန်ကန်စွာအလုပ်လုပ်သည် (ပုဒ်ဖြတ်သည်
မည်သည့်စာလုံးကိုမဆို ကိုယ်စားပြုသောကြောင့်၊ သာမန်ပုဒ်ဖြတ်
'.' ကိုလည်း အပါအဝင်ဖြစ်သည်)။ သို့သော် ကိုက်ညီမှုများ
ဖြစ်ပေါ်နေသော string ကို ပြောင်းလဲပါက - ကျွန်ုပ်တို့၏
အမှားကို တွေ့မြင်ရမည်-
'a.x abx azx'.replace(/a.x/g, '!'); // '! ! !' ကို ပြန်ပေးမည်၊ မျှော်လင့်ထားသည်မှာ '! abx azx' ဖြစ်သည်
အထူးသင်္ကေတများနှင့် သာမန်သင်္ကေတများ စာရင်း
သာမန်စာလုံးတစ်လုံးကို escape လုပ်ပါက - ဘာမှဆိုးကျိုးမရှိ - ၎င်းသည် ၎င်းကိုယ်၎င်းကို ဆက်လက်ကိုယ်စားပြုမည်။ ခြွင်းချက် - ဂဏန်းများ၊ ဂဏန်းများကို escape မလုပ်နိုင်ပါ။
ပေးထားသော သင်္ကေတတစ်ခုသည် အထူးသင်္ကေတဖြစ်မဖြစ် သံသယဖြစ်တတ်သည်။ အချို့သည် သံသယရှိသော သင်္ကေတအားလုံးကို အစဉ်အတိုင်း escape လုပ်သည်အထိ လုပ်ဆောင်ကြသည်။ သို့သော်လည်း၊ ၎င်းသည် မကောင်းသောအလေ့အကျင့်ဖြစ်သည် (regular expression ကို backslash များဖြင့် ရှုပ်ထွေးစေသည်)။
အထူးသင်္ကေတများမှာ- $ ^ . * + ? \
/ {} [] () |
အထူးသင်္ကေတများ မဟုတ်ပါ- @ : , ' " ;
- _ = < > % # ~ `& !
လက်တွေ့လေ့ကျင့်ခန်းများ
string ကို ပေးထားသည်-
let str = 'a.a aba aea';
�ျန်ရှိသော string များကို မဖမ်းယူဘဲ
'a.a' string ကို ရှာဖွေတွေ့ရှိမည့် regular expression တစ်ခုကို ရေးပါ။
string ကို ပေးထားသည်-
let str = '2+3 223 2223';
�ျန်ရှိသော string များကို မဖမ်းယူဘဲ
'2+3' string ကို ရှာဖွေတွေ့ရှိမည့် regular expression တစ်ခုကို ရေးပါ။
string ကို ပေးထားသည်-
let str = '23 2+3 2++3 2+++3 345 567';
�ျန်ရှိသော string များကို မဖမ်းယူဘဲ
'2+3'၊ '2++3'၊ '2+++3'
string များကို ရှာဖွေတွေ့ရှိမည့် regular expression တစ်ခုကို ရေးပါ
(+ သည် မည်မျှပမာဏမဆို ဖြစ်နိုင်သည်)။
string ကို ပေးထားသည်-
let str = '23 2+3 2++3 2+++3 445 677';
�ျန်ရှိသော string များကို မဖမ်းယူဘဲ
'23'၊ '2+3'၊ '2++3'၊
'2+++3' string များကို ရှာဖွေတွေ့ရှိမည့် regular expression တစ်ခုကို ရေးပါ။
string ကို ပေးထားသည်-
let str = '*+ *q+ *qq+ *qqq+ *qqq qqq+';
�ျန်ရှိသော string များကို မဖမ်းယူဘဲ
'*q+'၊ '*qq+'၊ '*qqq+'
string များကို ရှာဖွေတွေ့ရှိမည့် regular expression တစ်ခုကို ရေးပါ။
string ကို ပေးထားသည်-
let str = '[abc] {abc} abc (abc) [abc]';
စတုရန်းကွင်းထဲရှိ string များကို ရှာဖွေတွေ့ရှိပြီး
သူတို့ကို '!' နှင့် အစားထိုးမည့် regular expression တစ်ခုကို ရေးပါ။