რეგულარული გამონათქვამების შესავალი JavaScript-ში
რეგულარული გამონათქვამები არის ბრძანებები რთული ძიებისა და ჩანაცვლებისთვის (ან უბრალოდ ძიების). ისინი საშუალებას გაძლევთ გააკეთოთ ძალიან საინტერესო რამ, მაგრამ, სამწუხაროდ, შესწავლა საკმაოდ რთულია.
JavaScript-ში არსებობს რეგულარულ გამონათქვამებთან მუშაობის რამდენიმე
მეთოდი. ჩვენ მათთან გაცნობას
დავიწყებთ replace-ის მაგალითზე
- თქვენ უკვე იცნობთ ამ მეთოდს: ის პირველ
პარამეტრად იღებს რა უნდა შეიცვალოს, ხოლო მეორე
- რაზე უნდა შეიცვალოს. ხოლო თავად მეთოდი გამოიყენება
იმ სტრიქონზე, რომელშიც ხდება ჩანაცვლება:
'bab'.replace('a', '!'); // დააბრუნებს 'b!b'
ამ მეთოდის პირველ პარამეტრად შეიძლება გადავცეთ
არა მხოლოდ სტრიქონი, არამედ რეგულარული გამონათქვამი.
რეგულარული გამონათქვამი წარმოადგენს ბრძანებების
ნაკრებს, რომელიც მდებარეობს ხახულებს შორის /. ამ
ხახუნებს ეწოდება რეგულარული გამონათქვამების დელიმიტერები.
თავად რეგულარული გამონათქვამები შედგება ორი ტიპის სიმბოლოსგან: იმათგან, რომლებიც აღნიშნავენ თავის თავს და სიმბოლო-ბრძანებებისგან, რომლებსაც ეწოდება სპეციალური სიმბოლოები.
ასოები და ციფრები აღნიშნავენ თავის თავს. შემდეგ
მაგალითში ჩვენ რეგულარული გამონათქვამის საშუალებით
შევცვლით ასოს 'a' !-ზე:
'bab'.replace(/a/, '!'); // დააბრუნებს 'b!b'
წერტილი კი სპეციალური სიმბოლოა
და აღნიშნავს ნებისმიერ სიმბოლოს. შემდეგ
მაგალითში ჩვენ ვიპოვით სტრიქონს შემდეგი შაბლონით:
ასო 'x', შემდეგ ნებისმიერი სიმბოლო, შემდეგ
კვლავ ასო 'x':
'xax eee'.replace(/x.x/, '!'); // დააბრუნებს '! eee'
დელიმიტერების შემდეგ შეიძლება ჩაიწეროს მოდიფიკატორები
- ბრძანებები, რომლებიც ცვლიან რეგულარული გამონათქვამის ზოგად
თვისებებს. მაგალითად, მოდიფიკატორი
g ჩართავს გლობალური ძიების
და ჩანაცვლების რეჟიმს - მის გარეშე რეგულარული გამონათქვამი ეძებს მხოლოდ
პირველ დამთხვევას, ხოლო მასთან - ყველა დამთხვევას.
შემდეგ მაგალითში არ არის მითითებული მოდიფიკატორი
g და რეგულარული გამონათქვამი იპოვის მხოლოდ პირველ
დამთხვევას:
'aab'.replace(/a/, '!'); // დააბრუნებს '!ab'
ახლა კი რეგულარული გამონათქვამი იპოვის ყველა დამთხვევას:
'aab'.replace(/a/g, '!'); // დააბრუნებს '!!b'
მოცემულია სტრიქონი:
let str = 'ahb acb aeb aeeb adcb axeb';
დაწერეთ რეგულარული გამონათქვამი, რომელიც იპოვის სტრიქონებს
'ahb', 'acb', 'aeb'
შაბლონის მიხედვით: ასო 'a', ნებისმიერი სიმბოლო,
ასო 'b'.
მოცემულია სტრიქონი:
let str = 'aba aca aea abba adca abea';
დაწერეთ რეგულარული გამონათქვამი, რომელიც იპოვის სტრიქონებს
'abba', 'adca', 'abea'
შაბლონის მიხედვით: ასო 'a', 2
ნებისმიერი სიმბოლო, ასო 'a'.
მოცემულია სტრიქონი:
let str = 'aba aca aea abba adca abea';
დაწერეთ რეგულარული გამონათქვამი, რომელიც იპოვის სტრიქონებს
'abba' და 'abea', არ დაიჭიროს
'adca'.