JavaScript රෙගුලරු ප්රකාශනවල විශේෂ අක්ෂර එස්කේප් කිරීම
අපට අවශ්ය යැයි සිතන්න, විශේෂ අක්ෂරයක් සියලුම අගය සඳහාම නියෝජනය කිරීමට. මේ සඳහා එය එස්කේප් කළ යුතුය පසුපස ඉරි අඩංගු භාවිතා කරමින්. අපි උදාහරණ මගින් බලමු.
උදාහරණය
ඊළඟ උදාහරණයේ, රෙගුලරු ලියන්නාට අවශ්ය වූයේ,
සෙවුම් රටාව මෙලෙස පෙනෙන ලෙසයි: අකුර
'a', පසුව ප්ලස් ලකුණ '+', පසුව
අකුර 'x'. කෙසේ වෙතත්, කේතයේ කතුවරයා
අක්ෂරය '+' එස්කේප් කර නැත. එමනිසා
සෙවුම් රටාව ඇත්ත වශයෙන්ම මෙලෙස පෙනේ:
අකුර 'a' එක් හෝ ඊට වැඩි වාර ගණනක්, ඊට පසු
අකුර 'x':
javascriptlet str = 'a+x ax aax aaax';
let res = str.replace(/a+x/g, '!');
ප්රතිඵලයක් ලෙස විචල්යයට පහත දේ ලියනු ලැබේ:
javascript'a+x ! ! !'
උදාහරණය
දැන් කතුවරයා ප්ලස් ලකුණ පසුපස ඉරි ඇතිව එස්කේප් කර ඇත.
දැන් සෙවුම් රටාව නිවැරදිව පෙනේ: අකුර 'a',
පසුව ප්ලස් ලකුණ '+', පසුව අකුර 'x'.
javascriptlet str = 'a+x ax aax aaax';
let res = str.replace(/a\+x/g, '!');
ප්රතිඵලයක් ලෙස විචල්යයට පහත දේ ලියනු ලැබේ:
javascript'! ax aax aaax'
උදාහරණය
මෙම උදාහරණයේ, රටාව මෙලෙස පෙනේ: අකුර
'a', පසුව කර්ණය '.', පසුව
අකුර 'x':
javascriptlet str = 'a.x abx azx';
let res = str.replace(/a\.x/g, '!');
ප්රතිඵලයක් ලෙස විචල්යයට පහත දේ ලියනු ලැබේ:
javascript'! abx azx'
උදාහරණය
ඊළඟ උදාහරණයේ කතුවරයා කර්ණය එස්කේප් කිරීමට අමතක කර ඇත. රෙගුලරුවට සියලු උපස්ත්රිං වැටේ, මන්ද එස්කේප් නොකළ කර්ණයක් ඕනෑම අක්ෂරයක් නියෝජනය කරයි:
javascriptlet str = 'a.x abx azx';
let res = str.replace(/a.x/g, '!');
ප්රතිඵලයක් ලෙස විචල්යයට පහත දේ ලියනු ලැබේ:
javascript'! ! !'
සටහන
ඔබ අමතක කළහොත් අවධානය යොමු කරන්න කර්ණය සඳහා පසුපස ඉරි (එය සියලුම අගය සඳහාම නියෝජනය කළ යුතු විට) - මෙය සැලකිල්ලට නොගත හැකිය:
javascript'a.x'.replace(/a.x/g, '!'); // '!' ආපසු දෙයි, අප අපේක්ෂා කළ ආකාරයටම
දෘශ්යමාන වශයෙන් නිවැරදිව ක්රියා කරයි (මන්ද කර්ණය
ඕනෑම අක්ෂරයක් නියෝජනය කරයි, එයින් අදහස් වන්නේ සාමාන්ය
කර්ණය '.' ද වේ). නමුත් අපි ප්රතිස්ථාපනය කරන්නේ ස්ත්රිං එක වෙනස් කළහොත් -
අපි අපේ වැරැද්ද දකිමු:
javascript'a.x abx azx'.replace(/a.x/g, '!'); // '! ! !' ආපසු දෙයි, නමුත් අපේක්ෂිතය '! abx azx' විය
විශේෂ අක්ෂර සහ සාමාන්ය අක්ෂර ලැයිස්තුව
සාමාන්ය අක්ෂරයක් එස්කේප් කළහොත් - කිසිදු ගැටළුවක් සිදු නොවේ - එය එකම අර්ථය දක්වයි. කෙසේ වෙතත්, අවසානයේ - ඉලක්කම්, ඒවා එස්කේප් කළ නොහැකිය.
බොහෝ විට සැකයක් ඇතිවේ, දී ඇති අක්ෂරය විශේෂ ද යන්න පිළිබඳව. සමහරුන් එය සියලුම සැක සහිත අක්ෂර පේළියක් ලෙස එස්කේප් කරයි. කෙසේ වෙතත්, මෙය නරක භාවිතයකි (රෙගුලරු ප්රකාශන පසුපස ඉරි වලින් විනාශ කරයි).
විශේෂ අක්ෂර වන්නේ: $ ^ . * + ? \
/ {} [] () |
විශේෂ අක්ෂර නොවන්නේ: @ : , ' " ;
- _ = < > % # ~ `& !
ප්රායෝගික කාර්යයන්
පහත ස්ත්රිං එක ලබා දී ඇත:
javascriptlet str = 'a.a aba aea';
රෙගුලරු ප්රකාශනයක් ලියන්න, එය සෙවනු ලැබේ
'a.a', ඉතිරි ඒවා අල්ලා නොගෙන.
පහත ස්ත්රිං එක ලබා දී ඇත:
javascriptlet str = '2+3 223 2223';
රෙගුලරු ප්රකාශනයක් ලියන්න, එය සෙවනු ලැබේ
'2+3', ඉතිරි ඒවා අල්ලා නොගෙන.
පහත ස්ත්රිං එක ලබා දී ඇත:
javascriptlet str = '23 2+3 2++3 2+++3 345 567';
රෙගුලරු ප්රකාශනයක් ලියන්න, එය සෙවනු ලැබේ
'2+3', '2++3', '2+++3',
ඉතිරි ඒවා අල්ලා නොගෙන (+ ඕනෑම ගණනක් විය හැකිය
ප්රමාණය).
පහත ස්ත්රිං එක ලබා දී ඇත:
javascriptlet str = '23 2+3 2++3 2+++3 445 677';
රෙගුලරු ප්රකාශනයක් ලියන්න, එය සෙවනු ලැබේ
'23', '2+3', '2++3',
'2+++3', ඉතිරි ඒවා අල්ලා නොගෙන.
පහත ස්ත්රිං එක ලබා දී ඇත:
javascriptlet str = '*+ *q+ *qq+ *qqq+ *qqq qqq+';
රෙගුලරු ප්රකාශනයක් ලියන්න, එය සෙවනු ලැබේ
'*q+', '*qq+', '*qqq+',
ඉතිරි ඒවා අල්ලා නොගෙන.
පහත ස්ත්රිං එක ලබා දී ඇත:
javascriptlet str = '[abc] {abc} abc (abc) [abc]';
රෙගුලරු ප්රකාශනයක් ලියන්න, එය සෙවනු ලැබේ
කොටු වරහන් වල ඇති ස්ත්රිං සහ ඒවා ප්රතිස්ථාපනය කරන්න '!'.