JavaScript რეგულარული გამოსახულებების ტესტირება ბრაუზერში
რეგულარული გამოსახულებები (Regular Expressions ან Regex) წარმოადგენს სიმბოლოების შაბლონს, რომელიც გამოიყენება ტექსტში სიმბოლოების კომბინაციების მოსაძებნად და სამართავად. ვებ დეველოპმენტსა და მონაცემთა დამუშავებაში ხშირად არის საჭირო იმის შემოწმება, თუ როგორ მუშაობს კონკრეტული შაბლონი რეალურ მონაცემებზე.
ეს ხელსაწყო საშუალებას გაძლევთ შეამოწმოთ JavaScript რეგულარული გამოსახულებები სატესტო ტექსტზე პირდაპირ თქვენს ბრაუზერში. ხელსაწყო მყისიერად მონიშნავს თითოეულ დამთხვევას და საძიებო ჯგუფს, რაც გეხმარებათ დაინახოთ, თუ როგორ რეაგირებს თქვენი რეგულარული გამოსახულება სხვადასხვა ტიპის შესაყვან მონაცემზე.
ხელსაწყოს ინტერფეისი და პარამეტრები
სწორი შედეგის მისაღებად საჭიროა ორი ძირითადი ველის შევსება და სასურველი პარამეტრების მონიშვნა:
- შაბლონი: ველი, სადაც იწერება რეგულარული გამოსახულება. მაგალითად, ციფრების მოსაძებნად გამოიყენება ნაგულისხმევი შაბლონი
\d+. - ალმები (Flags): პარამეტრები, რომლებიც ცვლიან ძებნის ქცევას:
- g (Global): უზრუნველყოფს ყველა დამთხვევის მოძებნას და არა მხოლოდ პირველის.
- i: რეგისტრის უგულებელყოფა (დიდი და პატარა ასოების გათანაბრება).
- m: Multiline რეჟიმი, რომლის დროსაც
^და$სიმბოლოები ემთხვევა თითოეული ხაზის დასაწყისსა და დასასრულს და არა მთელი ტექსტის დასაწყისსა და ბოლოს. - s: წერტილი ემთხვევა ახალ ხაზს, რაც საშუალებას აძლევს
.სიმბოლოს დაამთხვიოს მათ შორის ხაზის გადაყვანის ნიშნებიც.
- სატესტო სტრიქონი: ტექსტი, რომელზეც გსურთ თქვენი შაბლონის გამოცდა.
დამთხვევების და ჯგუფების ინტერპრეტაცია
ტექსტის შეყვანისთანავე ხელსაწყო აჩვენებს დამუშავებულ შედეგებს:
- მონიშნული დამთხვევები: სატესტო ტექსტი, სადაც ყველა ნაპოვნი შესაბამისობა ვიზუალურად არის გამოყოფილი.
- დამთხვევები: ყველა ნაპოვნი შედეგის სრული სია. თუ შაბლონში გამოყენებულია ფრჩხილები ჯგუფების შესაქმნელად, თითოეული დამთხვევის ქვეშ გამოჩნდება შესაბამისი სეგმენტი წარწერით ჯგუფი
{n}. - დამთხვევა:
{count}: ნაპოვნი დამთხვევების საერთო რაოდენობა. - სიმბოლო: სატესტო ტექსტში არსებული სიმბოლოების საერთო რაოდენობა.
მუშაობის წესები და შეზღუდვები
სტაბილურობისა და სისწრაფის შესანარჩუნებლად, ხელსაწყო მუშაობს შემდეგი წესების მიხედვით:
- თუ ტექსტში შესაბამისობა ვერ მოიძებნა, ეკრანზე გამოჩნდება შეტყობინება: "დამთხვევა არ არის.".
- თუ შაბლონის სინტაქსი არასწორია, ხელსაწყო გამოსცემს შეცდომას: "არასწორი რეგულარული გამოსახულება.".
- თუ მომხმარებელი არ მონიშნავს გლობალურ ალამს (g), სისტემა დააბრუნებს მხოლოდ პირველ დამთხვევას.
- როდესაც გლობალური ალამი (g) აქტიურია, მაქსიმალური დამთხვევების რაოდენობა შეზღუდულია 1,000-მდე, ხოლო საინფორმაციო ბარათების მაქსიმალური რაოდენობა შეზღუდულია 100-მდე.
- თუ დამთხვევების რაოდენობა აჭარბებს ჩვენების ლიმიტს, ეკრანზე ჩნდება შენიშვნა: "ნაჩვენებია პირველი
{max}.". - ღილაკზე "გასუფთავება" დაჭერით ხელსაწყო იშლება და აჩვენებს სტატუსს: "გასუფთავდა.".
კატასტროფული უკანდახევის თავიდან აცილება
რეგულარული გამოსახულებების წერისას ერთ-ერთი მთავარი საფრთხე არის კატასტროფული უკანდახევა (catastrophic backtracking). ეს ხდება მაშინ, როდესაც შაბლონი შეიცავს ურთიერთგადამფარავ ჩადგმულ გამეორებებს (მაგალითად, (a+)+) და ცდილობს შეამოწმოს ტექსტი, რომელიც თითქმის ემთხვევა შაბლონს, მაგრამ ბოლოში განსხვავდება. ძრავა იწყებს ყველა შესაძლო კომბინაციის ექსპონენციალურ შემოწმებას, რამაც შეიძლება გამოიწვიოს პროცესორის გადატვირთვა და ბრაუზერის ჩანართის გაყინვა.
ამ პრობლემის თავიდან ასაცილებლად, ხელსაწყოში ჩაშენებულია დამცავი მექანიზმი: თუ შაბლონის შესრულებას 2 წამზე მეტი დრო სჭირდება, პროცესი ავტომატურად წყდება და ეკრანზე გამოდის გაფრთხილება: "ამ შაბლონის შესრულებას ძალიან დიდი დრო სჭირდება — ის შეიძლება კატასტროფულად ნელი იყოს. სცადეთ მისი გამარტივება.".
მონაცემთა კონფიდენციალურობა
თქვენი შაბლონი და ტექსტი მოწმდება თქვენს ბრაუზერში. BroBroGo-ზე არაფერი იტვირთება. ამიტომ შემოწმებისთვის სერვერზე ფაილის ან ტექსტის გაგზავნა საჭირო არ არის.
ხშირად დასმული კითხვები
უსაფრთხოა აქ ჩემი ტექსტის ჩასმა?
დიახ. დამთხვევების ძებნა მთლიანად თქვენს ბრაუზერში ხდება — BroBroGo-ზე არაფერი იგზავნება.
რას ნიშნავს g/i/m/s ალმები (flags)?
g პოულობს ყველა დამთხვევას და არა მხოლოდ პირველს. i უგულებელყოფს ასოების რეგისტრს. m აქცევს ^ და $ სიმბოლოებს თითოეული ხაზის დასაწყისისა და დასასრულის შესაბამისად და არა მთელი სტრიქონისა. s საშუალებას აძლევს წერტილს (.) დაამთხვიოს ახალი ხაზის სიმბოლოც.
რატომ წერს, რომ ჩემს შაბლონს ძალიან დიდი დრო სჭირდება?
ზოგიერთმა შაბლონმა შეიძლება გამოიწვიოს კატასტროფული უკანდახევა (catastrophic backtracking) — ძრავა ცდის კომბინაციების ექსპონენციალურ რაოდენობას, რამაც შეიძლება ბრაუზერის ჩანართი გაყინოს. ეს ხელსაწყო ასეთ დროს აჩერებს პროცესს 2 წამის შემდეგ. სცადეთ გაამარტივოთ ჩადგმული გამეორებები, როგორიცაა (a+)+.