Complex Regular Expressions (RegExp) গঠন করা এবং সেগুলির সঠিকতা নিশ্চিত করা কিছুটা চ্যালেঞ্জিং হতে পারে, বিশেষত যদি আপনি নতুন বা জটিল প্যাটার্ন তৈরি করছেন। তবে একটি step-by-step testing প্রক্রিয়া অনুসরণ করলে আপনি সহজেই বুঝতে পারবেন যে আপনার RegExp প্যাটার্নটি সঠিকভাবে কাজ করছে কিনা।
এখানে আমরা দেখব কীভাবে একটি জটিল RegExp প্যাটার্ন তৈরি করার পর সেটির জন্য টেস্টিং করতে পারেন, যাতে কোন ভুল না থাকে এবং প্যাটার্নটি সঠিকভাবে কাজ করে।
Step 1: প্যাটার্নের কাঠামো বুঝুন
প্রথমে, আপনি যে RegExp প্যাটার্নটি তৈরি করছেন, সেটির কাঠামো এবং উদ্দেশ্য পরিষ্কার করে নিন। উদাহরণস্বরূপ, যদি আপনি একটি URL ভ্যালিডেটর তৈরি করছেন, তাহলে প্যাটার্নটি কীভাবে কাজ করবে তা পরিষ্কারভাবে জানা দরকার।
উদাহরণ হিসেবে, একটি URL ভ্যালিডেশন প্যাটার্ন দেখুন:
let regex = /^(https?:\/\/)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}(\/[a-zA-Z0-9-_.]*)*(\?[a-zA-Z0-9=&]*)?(#[a-zA-Z0-9-]*)?$/;
এটি একটি সাধারিত URL প্যাটার্ন যা http বা https স্কিমা, ডোমেইন, পাথ, কোয়েরি এবং ফ্র্যাগমেন্ট যাচাই করতে ব্যবহার করা যেতে পারে।
Step 2: RegExp তৈরি করুন এবং প্রতিটি অংশ পরীক্ষা করুন
একটি জটিল RegExp প্যাটার্নে একাধিক অংশ থাকতে পারে, যেমন স্কিমা, ডোমেইন, পাথ, কোয়েরি ইত্যাদি। সেগুলি একে একে পরীক্ষা করুন। সহজে ভুল বোঝাবুঝি এড়াতে আপনি ছোট ছোট টুকরা করে প্যাটার্ন পরীক্ষা করতে পারেন।
উদাহরণ: URL স্কিমা পরীক্ষা করা
let regex = /^https?:\/\//;
let url = "https://www.example.com";
console.log(regex.test(url)); // true
এখানে https? নিশ্চিত করবে যে URL টি http বা https দিয়ে শুরু হচ্ছে।
উদাহরণ: ডোমেইন পরীক্ষা করা
let regex = /([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}/;
let url = "www.example.com";
console.log(regex.test(url)); // true
এটি ডোমেইন প্যাটার্ন পরীক্ষা করবে এবং নিশ্চিত করবে যে একটি বৈধ ডোমেইন নাম আছে (যেমন: example.com বা example.co.uk)
Step 3: সঠিক এবং ভুল ইনপুটের জন্য পরীক্ষা করুন
RegExp প্যাটার্নটি তৈরি করার পরে, এটি পরীক্ষা করা অত্যন্ত গুরুত্বপূর্ণ, যাতে আপনি নিশ্চিত হতে পারেন যে এটি সঠিক ইনপুট এবং ভুল ইনপুট সঠিকভাবে চিনতে পারছে। সঠিক ইনপুটের সাথে এবং ভুল ইনপুটের সাথে মিল চেক করুন।
সঠিক ইনপুট
let regex = /^(https?:\/\/)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}(\/[a-zA-Z0-9-_.]*)*(\?[a-zA-Z0-9=&]*)?(#[a-zA-Z0-9-]*)?$/;
let validUrl = "https://www.example.com/path?query=example#fragment";
console.log(regex.test(validUrl)); // true
ভুল ইনপুট
let regex = /^(https?:\/\/)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}(\/[a-zA-Z0-9-_.]*)*(\?[a-zA-Z0-9=&]*)?(#[a-zA-Z0-9-]*)?$/;
let invalidUrl = "htp://www.example";
console.log(regex.test(invalidUrl)); // false
এখানে "htp" সঠিক স্কিমা নয়, তাই এটি false রিটার্ন করবে।
Step 4: Edge Cases পরীক্ষা করুন
এটি নিশ্চিত করতে যে আপনার RegExp প্যাটার্নটি সঠিকভাবে কাজ করছে, আপনাকে edge cases পরীক্ষা করতে হবে। Edge cases হলো সেগুলি যা আপনার প্যাটার্নের ক্ষেত্রে বিশেষ পরিস্থিতিতে পড়বে, যেমন:
- খালি ইনপুট
- অত্যধিক লম্বা URL বা ডোমেইন
- বিশেষ চিহ্ন
খালি ইনপুট
let regex = /^(https?:\/\/)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}(\/[a-zA-Z0-9-_.]*)*(\?[a-zA-Z0-9=&]*)?(#[a-zA-Z0-9-]*)?$/;
let emptyUrl = "";
console.log(regex.test(emptyUrl)); // false
বিশেষ চিহ্ন সহ ইনপুট
let regex = /^(https?:\/\/)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}(\/[a-zA-Z0-9-_.]*)*(\?[a-zA-Z0-9=&]*)?(#[a-zA-Z0-9-]*)?$/;
let specialUrl = "https://www.example.com/path?query=hello@world#fragment";
console.log(regex.test(specialUrl)); // true
এখানে @ চিহ্নটি কোয়েরি প্যারামিটার বা ফ্র্যাগমেন্টের মধ্যে বৈধ বলে গণ্য হবে।
Step 5: Performance Testing (যদি প্রয়োজন হয়)
যদি আপনার RegExp প্যাটার্নটি খুব বড় বা জটিল হয়, তবে তার পারফরম্যান্স পরীক্ষা করা গুরুত্বপূর্ণ। বিশেষ করে যদি এটি অনেক ডেটার উপর কার্যকর করা হয়, যেমন বড় টেক্সট ব্লক বা ডেটাবেস রেকর্ড।
এখানে RegExp-এর test পদ্ধতি প্রতিবার যখনই ইনপুট পরীক্ষা করা হয়, এটি একটি নির্দিষ্ট সময়ে সঞ্চালিত হয়। উদাহরণস্বরূপ, আপনি একটি বড় স্ট্রিং অথবা অনেক গুলি URL যাচাই করতে পারেন।
let regex = /^(https?:\/\/)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}(\/[a-zA-Z0-9-_.]*)*(\?[a-zA-Z0-9=&]*)?(#[a-zA-Z0-9-]*)?$/;
let largeInput = "https://www.example.com\n".repeat(1000); // 1000 URLs
console.log(regex.test(largeInput)); // true/false based on the input
এটি পরীক্ষার মাধ্যমে পারফরম্যান্সের যে কোনো সমস্যা চিহ্নিত করতে সহায়ক।
Step 6: Debugging Tools ব্যবহার করুন
RegExp ডেভেলপ করার সময় RegEx debuggers বা online tools ব্যবহার করে পরীক্ষা করা খুবই কার্যকর। অনেক টুল আপনাকে RegExp-এর প্যাটার্ন ভিজ্যুয়ালাইজ করার সুবিধা দেয় এবং দেখায় যে প্যাটার্নটি কীভাবে স্ট্রিংয়ের বিভিন্ন অংশের সাথে মেলে। যেমন:
সারাংশ
Complex RegExp তৈরি করা এবং তার সঠিকতা নিশ্চিত করা একটি ধাপে ধাপে প্রক্রিয়া। আপনি প্যাটার্ন তৈরি করার পরে:
- প্রতিটি অংশের কাজ পরীক্ষা করুন
- সঠিক এবং ভুল ইনপুট দিয়ে পরীক্ষা করুন
- Edge cases যাচাই করুন
- পারফরম্যান্স টেস্টিং প্রয়োগ করুন
- ডিবাগিং টুল ব্যবহার করে সমস্যা চিহ্নিত করুন
এই স্টেপ-বাই-স্টেপ পদ্ধতির মাধ্যমে আপনি একটি জটিল RegExp প্যাটার্নের সঠিকতা নিশ্চিত করতে পারবেন এবং কোনো ভুল থাকলে তা সহজেই সংশোধন করতে পারবেন।
Read more