ტირე ჯავასკრიპტის რეგულარული გამონათქვამების სიმბოლოების ნაკრებებში
ტირე - ასევე სპეციალური სიმბოლოა [ ]-ის შიგნით
(მაგრამ გარეთ - არა). თუ თქვენ გჭირდებათ თავად
ტირე, როგორც სიმბოლო - მაშინ მოათავსეთ ის იქ,
სადაც ის არ აღიქმება, როგორც ჯგუფის გამყოფი.
რატომ არის ეს მნიშვნელოვანი: თქვენ შეგიძლიათ შექმნათ სიმბოლოთა ჯგუფი,
თავად ამის შეუმჩნევლად. მაგალითად,
აი ასე - '[:-@]' - თქვენ ფიქრობთ, რომ
ირჩევთ მრვიწყოებას, ტირეს და @-ს, მაგრამ
სინამდვილეში მიიღება სიმბოლოთა ჯგუფი
:-სა და @-ს შორის. ამ ჯგუფში შედის
შემდეგი სიმბოლოები: ? < = > : ;
საიდან გაჩნდნენ ისინი? 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'.