Дефис дар дохили маҷмӯаҳо дар регуляристҳои JavaScript
Дефис - низ аломати махсус дар дохили [ ]
(аммо берун аз он - нест). Агар ба шумо худи дефис
чун аломат лозим бошад - онро ҷое гузоред,
ки он ҳамчун ҷудокунандаи гурӯҳ дарк намешавад.
Чаро ин муҳим аст: шумо метавонед гурӯҳи аломатҳо
созед, худатон ҳис намекунед. Масалан,
ин тавр - '[:-@]' - шумо фикр мекунед, ки
дунуқта, дефис ва аломати @-ро интихоб мекунед, аммо дар
амал гурӯҳи аломатҳо байни : ва @ ба даст меояд.
Ба ин гурӯҳ аломатҳои зерин дохил мешаванд: ? < = > : ;
Онҳо аз куҷо омадаанд? Аз ҷадвали ASCII - дунуқта рақами хурдтар аз аломати @ дорад - ва гурӯҳ ба даст меояд. Яъне ҳама гурӯҳҳо мувофиқи ҷадвали ASCII ба даст меоянд (агар хоҳед метавонед аз ин истифода баред).
Чӣ тавр бо ин мубориза барем: аломати дефисро
дар ҷое гузоред, ки албатта он ҳамчун
аломати гурӯҳ дарк намешавад, масалан, дар аввал ё дар охир
(яъне пас аз [ ё пеш аз ]).
Инчунин шумо метавонед дефисро экран кунед - он гоҳ
он аз ҳар ҳолат ҳувияти худро нишон медиҳад.
Масалан, ба ҷои [:-@] нависед
[:\-@] - ва дигар гурӯҳе нахоҳад буд, а
се аломат хоҳад буд - дунуқта, дефис ва аломати
@.
Намуна
Дар намунаи зерини нақшаи ҷустуҷӯ инҳоянд:
рақам 1, сипас ҳарф аз 'a'
то 'z', сипас рақам 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a-z]2/g, '!');
Дар натиҷа ба тағйирёбандаи зерин навишта мешавад:
'! 1-2 ! !'
Намуна
Биёед акнун дефисро экран кунем. Дар натиҷа
нақшаи ҷустуҷӯ инҳоянд: рақам 1, сипас
ҳарфи 'a', ё дефис, ё ҳарфи 'z',
сипас рақам 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a\-z]2/g, '!');
Дар натиҷа ба тағйирёбандаи зерин навишта мешавад:
'! ! 1c2 !'
Намуна
Шумо метавонед дефисро танҳо ҷой иваз кунед, бе он ки онро экран кунед:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[az-]2/g, '!');
Дар натиҷа ба тағйирёбандаи зерин навишта мешавад:
'! ! 1c2 !'
Намуна
Дар намунаи зерини нақшаи ҷустуҷӯ инҳоянд:
аломати аввал - ин ҳарфҳои хурд ё
дефис '-', сипас ду ҳарфи 'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-z-]xx/g, '!');
Дар натиҷа ба тағйирёбандаи зерин навишта мешавад:
'! Axx ! @xx'
Намуна
Дар намунаи зерини нақшаи ҷустуҷӯ инҳоянд:
аломати аввал - ин ҳарфҳои хурд, бузург
ё дефис '-', сипас ду ҳарфи
'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-zA-Z-]xx/g, '!');
Дар натиҷа ба тағйирёбандаи зерин навишта мешавад:
'! ! ! @xx'
Намуна
Шумо метавонед дефисро байни ду гурӯҳ ҷойгир кунед - он ҷо албатта то ҳол гурӯҳи дигар намесозад:
let str = 'axx 9xx -xx @xx';
let res = str.replace(/[a-z-0-9]xx/g, '!');
Дар натиҷа ба тағйирёбандаи зерин навишта мешавад:
'! ! ! @xx'
Масъалаҳои амалӣ
Сатр дода шудааст:
let str = 'xaz xBz xcz x-z x@z';
Ҳама сатрҳоро мувофиқи нақшаи зерин ёбед:
ҳарфи 'x', ҳарфи бузург ё хурд
ё дефис, ҳарфи 'z'.
Сатр дода шудааст:
let str = 'xaz x$z x-z xcz x+z x%z x*z';
Ҳама сатрҳоро мувофиқи нақшаи зерин ёбед:
ҳарфи 'x', сипас ё доллар, ё
дефис ё аломати +, баъд ҳарфи 'z'.