JavaScript এ RegExp প্যাটার্নের সাথে বিভিন্ন ফ্ল্যাগ ব্যবহার করা হয়, যা প্যাটার্নের আচরণকে কাস্টমাইজ এবং নিয়ন্ত্রণ করতে সাহায্য করে। ফ্ল্যাগগুলো স্ট্রিংয়ের মধ্যে প্যাটার্ন মেলানো বা অন্যান্য ম্যানিপুলেশন কাজে ব্যবহৃত হয়। এখানে কয়েকটি গুরুত্বপূর্ণ ফ্ল্যাগের ব্যাখ্যা দেওয়া হলো:
g (Global)
g (Global) ফ্ল্যাগটি স্ট্রিংয়ের সমস্ত মিল খুঁজে বের করতে ব্যবহৃত হয়। এটি প্যাটার্নের অনুসন্ধানকে বিশ্বব্যাপী তৈরি করে, অর্থাৎ প্রথম ম্যাচ পাওয়ার পর অনুসন্ধান থেমে যাবে না।
উদাহরণ:
let regex = /apple/g;
let str = "apple banana apple orange apple";
console.log(str.match(regex)); // [ 'apple', 'apple', 'apple' ]
এখানে, g ফ্ল্যাগের কারণে স্ট্রিংয়ের সমস্ত "apple" শব্দটি পাওয়া যায়।
i (Ignore Case)
i (Ignore Case) ফ্ল্যাগটি কেস-ইনসেনসিটিভ (case-insensitive) ম্যাচিং সক্ষম করে। এর মানে হলো, এটি বড় হাতের এবং ছোট হাতের অক্ষরের মধ্যে কোনো পার্থক্য করে না।
উদাহরণ:
let regex = /hello/i;
let str = "HELLO world";
console.log(regex.test(str)); // true
এখানে, i ফ্ল্যাগের কারণে "HELLO" এবং "hello" উভয়ই মিলে যাবে, কেসের পার্থক্য সত্ত্বেও।
m (Multiline)
m (Multiline) ফ্ল্যাগটি প্যাটার্নের মধ্যে বহু লাইনে (multiple lines) মিল খুঁজে বের করতে ব্যবহৃত হয়। এটি স্ট্রিংয়ের শুরু (^) এবং শেষ ($) চিহ্নের আচরণ পরিবর্তন করে, যাতে সেগুলো একাধিক লাইনে কাজ করতে পারে।
উদাহরণ:
let regex = /^hello/m;
let str = "hello\nworld";
console.log(regex.test(str)); // true
এখানে, m ফ্ল্যাগের কারণে "hello" নতুন লাইনের শুরুতে পাওয়া যায় এবং মিলটি সঠিকভাবে চিহ্নিত হয়।
u (Unicode)
u (Unicode) ফ্ল্যাগটি ইউনিকোড (Unicode) অক্ষরগুলোকে সমর্থন করে। এই ফ্ল্যাগটি বিশেষ করে ইমোজি বা অন্য ইউনিকোড চরিত্রের জন্য ব্যবহৃত হয়, যা সাধারণভাবে অন্যান্য RegExp ফ্ল্যাগ দ্বারা সঠিকভাবে ম্যাচ হয় না।
উদাহরণ:
let regex = /\u{1F600}/u; // 😀 (গ্রিন ফেস ইমোজি)
let str = "I am happy 😀";
console.log(regex.test(str)); // true
এখানে, u ফ্ল্যাগের কারণে ইউনিকোড চরিত্র "😀" সঠিকভাবে ম্যাচ হয়।
s (Dotall)
s (Dotall) ফ্ল্যাগটি ডট (.) মেটাচরিত্রকে নতুন লাইন সহ যেকোনো চরিত্র হিসেবে বিবেচনা করতে ব্যবহৃত হয়। সাধারণভাবে, ডট মেটাচরিত্রটি শুধুমাত্র এক লাইনে থাকা চরিত্রের সাথে মেলে, কিন্তু s ফ্ল্যাগ ব্যবহারের মাধ্যমে এটি নতুন লাইনে থাকা চরিত্রগুলোও মেলাতে পারে।
উদাহরণ:
let regex = /hello.world/s;
let str = "hello\nworld";
console.log(regex.test(str)); // true
এখানে, s ফ্ল্যাগের কারণে ডট মেটাচরিত্রটি "hello" এবং "world" এর মধ্যে নতুন লাইন থাকা সত্ত্বেও মিলিয়ে ফেলছে।
y (Sticky)
y (Sticky) ফ্ল্যাগটি প্যাটার্নের অনুসন্ধানকে স্ট্রিংয়ের বর্তমান অবস্থানে সীমাবদ্ধ করে। এটি প্যাটার্নটি শুধুমাত্র স্ট্রিংয়ের সেই অংশে প্রয়োগ করবে, যেখানে আগের মিলটি শেষ হয়েছিল।
উদাহরণ:
let regex = /apple/y;
let str = "apple banana apple";
console.log(regex.exec(str)); // [ 'apple', index: 0, input: 'apple banana apple', groups: undefined ]
console.log(regex.exec(str)); // null
এখানে, y ফ্ল্যাগের কারণে প্রথম মিল পাওয়ার পর অনুসন্ধানটি থেমে যায় এবং পরবর্তী মিল পাওয়া যায় না।
সারাংশ
JavaScript এ RegExp flags প্যাটার্নের আচরণ এবং কার্যকারিতা পরিবর্তন করতে ব্যবহৃত হয়। কিছু গুরুত্বপূর্ণ ফ্ল্যাগগুলো হলো:
g: Global - স্ট্রিংয়ের সব মিল খুঁজে বের করা।i: Ignore Case - কেস-ইনসেনসিটিভ মিলানো।m: Multiline - বহু লাইনে মিলানো।u: Unicode - ইউনিকোড অক্ষর সমর্থন।s: Dotall - ডট মেটাচরিত্রকে নতুন লাইনসহ মিলাতে সক্ষম করা।y: Sticky - অনুসন্ধানকে স্ট্রিংয়ের বর্তমান অবস্থানে সীমাবদ্ধ করা।
ফ্ল্যাগগুলো ব্যবহার করে RegExp এর কার্যকারিতা কাস্টমাইজ করা যায় এবং এটি আরও শক্তিশালী ও লচপল হতে সাহায্য করে।
Read more