მეთოდი: search() და რეგულარული გამოსახულების (regular expression – regex, regexp) მიმოხილვა – 2 – JS

სანამ უშუალოდ რეგულარული გამოსახულებების განხილვას გავაგრძელებთ, მინდა გითხრათ რომ:

რეგულარული გამოსახულებები, არ არის შექმნილი / მოგონილი მხოლოდ ჯავასკრიპტისთვის, ის არის დამოუკიდებელი პატარა / მინი ენა, ის გამოიყენება სხვა არა ერთ პროგრამირების ენაში, რეგულარული გამოსახულებების შესახებ არსებობს უამრავი ინფორმაცია, არსებობს ასევე წიგნებიც, მაგრამ ჩვენ Javascript ის შესწავლისას არ გავივლით მას სრულად, ჩვენ შევისწავლით მის ძირითად მომენტებს, რომელიც დაგვეხმარება შევასრულოთ ჩვენთვის მოცემული / დასახული პირობები.

ასევე აღსანიშნავია ისიც რომ, არსებობს რეგულარული გამოსახულების მოკლე ჩანაწერი (Crib, უფრო გასაგებ ენაზე: шпаргалка / შპარგალკა), რომელშიც თავმოყრილია / აღწერილია რეგულარული გამოსახულების ენის ძირითადი მომენტები, რომელიც გამოიყენება ყოველდღიური პროგრამირებისას.

მოკლე ჩანაწერები რეგულარული გამოსახულებების შესახებ შეგიძლიათ დამოუკიდებლად მოიძიოთ ინტერნეტში, მე შემიძლია შემოგთავაზოთ შემდეგი ინგლისური და რუსული წყარო, ის სამწუხაროდ ქართულ ენაზე ჯერჯერობით არ არის ნათარგმნი:

ინგლისური ვერსია: Regular Expressions Cheat Sheet (V2) – გადმოწერა

რუსული ვერსია: Шпаргалка по регулярным выражениям – გადმოწერა

გავაგრძელოთ, განხილვა რეგულარული გამოსახულებებისა:

პირველ რიგში უნდა შევკვეცოთ შემდეგი ჩანაწერი

var regExp = /\d\d\d\d/;

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - 2 - JS

იმიტომ რომ, თუ საჭირო იქნებოდა გადამოწმება მაგალითზე რომ წარმოვიდგინოთ არა საფოსტო ინდექსისა არამედ, საქართველოში არსებული ავტომობილებისა დაჯგუფებული ბრენდების მიხედვით, მაშინ ცვლადი myIndex ტოლი იქნებოდა უფრო მეტი რაოდენობის სიმბოლოებისა / ციფრებისა, კიდევ თუ გართულდება მოცემული პირობა, ცვლად myIndex -ში შეძლება მოთავსდეს 10 სიმბოლო, 100 სიმბოლო, 1000 სიმბოლო და უფრო მეტიც, გამომდინარე აქედან ჩვენ მოგვიწევს ძალიან ბევრი \d -ს დაწერა, ანუ იმდენისა რამდენი ციფრიც გვექნება ცვლადში შენახული, ამ ამოცანის გადასაჭრელად მოდით გამოვიყენოთ, მოკლე ჩანაწერი რეგულარული გამოსახულებების შესახებ, გავხსნათ PDF დოკუმენტი, მასში ვიპოვოთ ბლოკი სათაურით: “Quantifiers”, რომელშიც განმარტებული და მოცემულია ელემენტების რაოდენობის შესახებ ნიშნები:

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - 2 - JS

ჩვენი ამოცანიდან გამომდინარე, საჭიროა რომ ჯერ გადავამოწმოთ

var myIndex = “0108”;

თუ შეიცავს 0 -დან 9 -ის ჩათვლით ციფრებს ანუ \d

და

შემდეგ დავწეროთ თუ რამდენი ციფრი უნდა გადაამოწმოს კომპიუტერმა

ამ შემთხვევისთვის გამოგვადგება:

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - 2 - JS

ეს ჩანაწერი, რომელშიც როგორც ხედავთ წერია: ტოლია არსებული რაოდენობისა

გამომდინარე აქედან:

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - 2 - JS

შედეგი:

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - 2 - JS

http://jsfiddle.net/wholehat/hDRj7/

ანუ რა შევცვალეთ, პირველ მაგალითში გვეწერა:

var regExp = /\d\d\d\d/;

დავტოვეთ მხოლოდ ერთი ცალი: \d და მას გვერდით დავუწერეთ სიმბოლოების რაოდენობის მაჩვენებელი ნიშნები, მოკლე ჩანაწერის მიხედვით ანუ:

{ ციფრი }

ჩვენს შემთხვევაში:

var regExp = /\d{4}/;

{4} – იმიტომ ოთხი რომ, მოცემული პირობის შესაბამისად აუცილებელია ცვლადში შენახული ოთხივე სიმბოლოს გადამოწმება, წარმოადგენენ თუ არა ისინი ნამდვილად ციფრებს და არა სხვა სიმბოლოებს. იმ შემთხვევაში თუ ცვლადში შენახული გვექნებოდა 10 სიმბოლო, ხოლო პირობა იქნებოდა იგივე, მაშინ დავწერდით შემდეგნაირად:

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - 2 - JS

შედეგი:

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - 2 - JS

http://jsfiddle.net/wholehat/3J8g9/

წარმოვიდგინოთ რომ, მომხმარებელმა, საფოსტო ინდექსის ნაცვლად, ველში ჩაწერა შემდეგნაირად:

საფოსტო ინდექსი: 0108

ანუ:

var myIndex = “საფოსტო ინდექსი: 0108”;

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - 2 - JS

შედეგი:

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - 2 - JS

http://jsfiddle.net/wholehat/G839p/

მაგალითიდან გამომდინარე ვხედავთ, როგორც ეს წინა თემაში გავიარეთ, კომპიუტერმა გადაამოწმა ტექსტი:

საფოსტო ინდექსი: 0108

და ცვლად myIndex -ში შენახული ინფორმაციაში ციფრი აღმოაჩინა რიგით 17 -ე სიმბოლოში

თუ ჩვენ მას გადავთვლით, მივიღებთ 17 -ს:

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - 2 - JS

Advertisements

კომენტარის დატოვება

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / შეცვლა )

Twitter picture

You are commenting using your Twitter account. Log Out / შეცვლა )

Facebook photo

You are commenting using your Facebook account. Log Out / შეცვლა )

Google+ photo

You are commenting using your Google+ account. Log Out / შეცვლა )

Connecting to %s