Аломатҳои махсусро дар регуляриҳои JavaScript экран кардан
Фарз мекунем, ки мо мехоҳем ба тавре созем, ки аломати махсус худро ифода кунад. Барои ин онро бо истифода аз качаки баръакс экран кардан лозим аст. Биёед ба мисолҳо назар андозем.
Мисол
Дар мисоли оянда муаллифи регуляри мехост,
ки намунаи ҷустуҷӯ инчунин намоён шавад: ҳарф
'a', сипас аломати қошиш '+', сипас
ҳарф 'x'. Аммо, муаллифи рамз
аломати '+'-ро экран накардааст ва аз ин рӯ
намунаи ҷустуҷӯ дар асл ба ин шакл аст:
ҳарфи 'a' як ё зиёда маротиба, баъд
ҳарфи 'x':
let str = 'a+x ax aax aaax';
let res = str.replace(/a+x/g, '!');
Дар натиҷа ба тағйирёбандаи зерин сабт мешавад:
'a+x ! ! !'
Мисол
Ва ҳоло муаллиф аломати қошишро бо качаки баръакс
экран кардааст. Акнун намунаи ҷустуҷӯ ба сурати дуруст
намоён мешавад: ҳарф 'a', сипас аломати қошиш
'+', сипас ҳарф 'x'.
let str = 'a+x ax aax aaax';
let res = str.replace(/a\+x/g, '!');
Дар натиҷа ба тағйирёбандаи зерин сабт мешавад:
'! ax aax aaax'
Мисол
Дар ин мисол намуна ба ин шакл аст: ҳарф
'a', сипас нуқта '.', сипас
ҳарф 'x':
let str = 'a.x abx azx';
let res = str.replace(/a\.x/g, '!');
Дар натиҷа ба тағйирёбандаи зерин сабт мешавад:
'! abx azx'
Мисол
Дар мисоли оянда муаллиф качакро экран карданро фаромӯш кардааст ва зери регуляри ҳама зерҳафтаҳо гирифта шуданд, зеро нуқтаи ғайриэкраншуда ҳар гуна аломатро ифода мекунад:
let str = 'a.x abx azx';
let res = str.replace(/a.x/g, '!');
Дар натиҷа ба тағйирёбандаи зерин сабт мешавад:
'! ! !'
Тавзеҳ
Ба ин диққат диҳед, ки агар шумо качаки баръаксро барои нуқта фаромӯш кунед (вақте ки он бояд худро ифода кунад) - инро ҳатто мумкин аст надида гиред:
'a.x'.replace(/a.x/g, '!'); // '!'-ро бармегардонад, ҳамон тавре ки мо мехостем
Бо назар дуруст кор мекунад (зеро нуқта
ҳар гуна аломатро, аз ҷумла нуқтаи оддии
'.' ифода мекунад). Аммо агар сатрро иваз кунем,
ки дар он иваз карданҳо рух медиҳад - мо хатои худро
хоҳем дид:
'a.x abx azx'.replace(/a.x/g, '!'); // '! ! !'-ро бармегардонад, аммо '! abx azx' интизор мерафт
Рӯйхати аломатҳои махсус ва оддӣ
Агар аломати оддиро экран кунед - ҳеҷ чизи бад рӯй намедиҳад - он ҳамон тавр худро ифода хоҳад кард. Истисно - рақамҳо, онҳоро экран кардан мумкин нест.
Аксар вақт шак ба миён меояд, ки оё ин аломат махсус аст. Баъзеҳо то он ҷо мераванд, ки ҳамаи аломатҳои гумоннокро пай дар пай экран мекунанд. Аммо, ин амалиёти нописанд аст (регуляриро бо качакҳои баръакс партов мекунад).
Аломатҳои махсус мебошанд: $ ^ . * + ? \
/ {} [] () |
Аломатҳои махсус нестанд: @ : , ' " ;
- _ = < > % # ~ `& !
Масъалаҳои амалӣ
Сатр дода шудааст:
let str = 'a.a aba aea';
Регулярие нависед, ки сатри
'a.a'-ро ёбад,
дигаронро нагирад.
Сатр дода шудааст:
let str = '2+3 223 2223';
Регулярие нависед, ки сатри
'2+3'-ро ёбад,
дигаронро нагирад.
Сатр дода шудааст:
let str = '23 2+3 2++3 2+++3 345 567';
Регулярие нависед, ки сатрҳои
'2+3', '2++3', '2+++3'-ро
ёбад, дигаронро нагирад (+ метавонад ҳар қадар
бошад).
Сатр дода шудааст:
let str = '23 2+3 2++3 2+++3 445 677';
Регулярие нависед, ки сатрҳои
'23', '2+3', '2++3',
'2+++3'-ро ёбад, дигаронро нагирад.
Сатр дода шудааст:
let str = '*+ *q+ *qq+ *qqq+ *qqq qqq+';
Регулярие нависед, ки сатрҳои
'*q+', '*qq+', '*qqq+'-ро
ёбад, дигаронро нагирад.
Сатр дода шудааст:
let str = '[abc] {abc} abc (abc) [abc]';
Регулярие нависед, ки сатрҳои
дар қафаскҳои квадратӣ ёфташударо бо '!' иваз кунад.