რეგულარული გამონათქვამების ოპტიმიზაცია JavaScript-ში
რეგულარული გამონათქვამები ძალიან მძიმე და შედარებით ნელად მოქმედი რამ არის. როდესაც არსებობს ალტერნატიული გადაწყვეტა, სასურველია მისი გამოყენება.
მოდით შევხედოთ მაგალითს. დავუშვათ, ჩვენ გვჭირდება შევამოწმოთ, იწყება თუ არა გარკვეული სტრიქონი ძახილის ნიშნით. რაღაც პროგრამისტმა ეს ამოცანა გადაწყვიტა რეგულარული გამონათქვამის საშუალებით:
let str = '!123';
if (/^!/.test(str)) {
console.log('+++');
} else {
console.log('---');
}
თუმცა, ასეთი ამოცანა გაცილებით სწრაფად მოქმედი გადაწყვეტა აქვს:
let str = '!123';
if (str[0] == '!') {
console.log('+++');
} else {
console.log('---');
}
შემდეგი კოდი ამოწმებს სტრიქონში
ქვესტრიქონის '33' არსებობას.
შეასრულეთ ოპტიმიზაცია:
let str = '123345';
if (/33/.test(str)) {
console.log('+++');
} else {
console.log('---');
}
შემდეგი კოდი ამოწმებს, მთავრდება თუ არა
სტრიქონი '.html'-ზე.
შეასრულეთ ოპტიმიზაცია:
let str = 'index.html';
if (/\.html$/.test(str)) {
console.log('+++');
} else {
console.log('---');
}
შემდეგი კოდი წყვეტს ბოლო სფეისებს. შეასრულეთ ოპტიმიზაცია:
let str = ' text ';
let res = str.replace(/^\s+|\s+$/g, '');
console.log(res);