ECMAScript এর নতুন RegExp ফিচার

Web Development - জাভাস্ক্রিপ্ট রেগএক্সপি (Javascript RegExp) - RegExp এর ভবিষ্যৎ এবং নতুন ফিচার
170

ECMAScript (ES) সংস্করণগুলি প্রতিনিয়ত নতুন নতুন ফিচার যুক্ত করে, যার মধ্যে RegExp (Regular Expressions) এর ক্ষেত্রেও বেশ কিছু নতুন বৈশিষ্ট্য যুক্ত হয়েছে। এই নতুন বৈশিষ্ট্যগুলো RegExp এর ব্যবহার সহজতর, শক্তিশালী এবং কার্যকরী করে তোলে, পাশাপাশি পারফরম্যান্সও উন্নত করে।

এখানে আমরা কিছু গুরুত্বপূর্ণ নতুন RegExp ফিচার আলোচনা করবো যা ECMAScript এর সাম্প্রতিক সংস্করণে (ES6 এবং পরবর্তী সংস্করণে) এসেছে।


১. y (Sticky) ফ্ল্যাগ

ECMAScript 6 (ES6) থেকে y (sticky) ফ্ল্যাগ যুক্ত করা হয়েছে, যা একটি RegExp প্যাটার্নকে স্ট্রিংয়ের নির্দিষ্ট পজিশন থেকে মেলা শুরু করতে বাধ্য করে। এর ফলে আপনি একটি RegExp প্যাটার্ন দিয়ে শুধুমাত্র বর্তমান পজিশন থেকে মিল খুঁজতে পারেন, এবং স্ট্রিংয়ের পরবর্তী অংশে আর মিল খোঁজা হবে না।

উদাহরণ:

let regex = /abc/y;
let str = "abcabc";
console.log(regex.exec(str));  // ["abc"]
console.log(regex.exec(str));  // null

এখানে, প্রথম exec() কল করে প্রথম abc স্ট্রিংটির সাথে মেলে, কিন্তু পরবর্তী কলটি কোনো মিল পায় না, কারণ sticky ফ্ল্যাগ প্যাটার্নের পরবর্তী অংশে আর খোঁজে না।


২. u (Unicode) ফ্ল্যাগ

u (Unicode) ফ্ল্যাগ RegExp এর মধ্যে ইউনিকোডের সাথে সম্পূর্ণ সামঞ্জস্য রাখতে ব্যবহৃত হয়। এর মাধ্যমে আপনি ইউনিকোড ক্যারেক্টার এবং সাম্প্রতিক ইউনিকোড সমর্থিত প্যাটার্ন ব্যবহার করতে পারবেন।

এটি ইউনিকোড এসকেপ সিকোয়েন্স এবং সঠিক ভাবে surrogate pairs সনাক্ত করতে সাহায্য করে।

উদাহরণ:

let regex = /\u{1F600}/u;  // Unicode for 😀 (grinning face)
let str = "😀";
console.log(regex.test(str));  // true

এখানে, u ফ্ল্যাগ ব্যবহৃত হয়েছে, যা ইউনিকোড প্যাটার্নে সঠিকভাবে কাজ করবে।


৩. s (Dotall) ফ্ল্যাগ

ECMAScript 2018 (ES9) থেকে s (Dotall) ফ্ল্যাগ যোগ করা হয়েছে। এই ফ্ল্যাগটি RegExp এর . (dot) বিশেষ অক্ষরকে নতুন লাইনে (newline) মেলানোর অনুমতি দেয়, যা সাধারণত হয় না। এটি স্ট্রিংয়ের মধ্যে একাধিক লাইনের মধ্যে মেলানো প্যাটার্নের জন্য খুবই উপকারী।

উদাহরণ:

let regex = /a.b/s;  // Dot matches newlines
let str = "a\nb";
console.log(regex.test(str));  // true

এখানে, . চিহ্নটি এখন newline (যেমন \n) চরিত্রেও মেলাতে সক্ষম।


৪. Named Capture Groups

ECMAScript 2018 (ES9) থেকে Named Capture Groups এর সমর্থন এসেছে। এর মাধ্যমে, আপনি ক্যাপচার গ্রুপগুলিকে একটি নাম দিতে পারেন, যা গ্রুপের মান বের করা আরো সহজ এবং পাঠযোগ্য করে তোলে।

উদাহরণ:

let regex = /(?<firstName>\w+) (?<lastName>\w+)/;
let str = "John Doe";
let result = regex.exec(str);
console.log(result.groups.firstName);  // "John"
console.log(result.groups.lastName);   // "Doe"

এখানে, firstName এবং lastName নামক ক্যাপচার গ্রুপগুলো ব্যবহার করা হয়েছে, যার ফলে আপনি সেগুলোর মান খুব সহজে অ্যাক্সেস করতে পারেন।


৫. Lookbehind Assertions

Lookbehind Assertions ECMAScript 2018 (ES9) থেকে যুক্ত করা হয়েছে। এর মাধ্যমে আপনি বিগত অংশের মিল চেক করতে পারেন, অর্থাৎ এটি চেক করবে যে প্যাটার্নটির আগের অংশ কেমন ছিল, কিন্তু নিজেই প্যাটার্নে অংশ হিসাবে গণ্য হবে না।

উদাহরণ:

let regex = /(?<=@)\w+/;  // Matches the domain part of an email
let str = "example@example.com";
console.log(regex.exec(str)[0]);  // "example"

এখানে, (?<=@) লুকবিহাইন্ড অ্যাসারশন ব্যবহার করা হয়েছে, যা @ এর পরে থাকা অংশ মিলাবে।


৬. Lookahead Assertions

Lookahead Assertions এর সমর্থন আগেই ছিল, কিন্তু ECMAScript 2018 (ES9) এ নতুন কিছু বৈশিষ্ট্য যোগ করা হয়েছে, যার ফলে এগুলি আরো শক্তিশালী এবং জটিল প্যাটার্নের সাথে মিল খুঁজতে সক্ষম।

উদাহরণ:

let regex = /\d+(?=\w+)/;  // Matches digits followed by word characters
let str = "123abc";
console.log(regex.exec(str)[0]);  // "123"

এখানে, (?=\w+) লুকআহেড অ্যাসারশন ব্যবহৃত হয়েছে, যা নিশ্চিত করে যে সংখ্যার পর একটি শব্দ থাকবে, তবে এই অংশটি মিলের অংশ হিসেবে গণ্য হবে না।


৭. \k<name> Backreference

ECMAScript 2023 (ES13) এ নতুনভাবে backreference ব্যবহার করার জন্য \k<name> সিনট্যাক্স যোগ করা হয়েছে, যা named capture groups এর মানকে পুনরায় ব্যবহার করার জন্য একটি সহজ পদ্ধতি প্রদান করে।

উদাহরণ:

let regex = /(?<first>\d+)-(?<second>\d+)-(?<third>\k<first>)/;
let str = "123-456-123";
console.log(regex.test(str));  // true

এখানে, \k<first> ব্যবহার করে প্রথম গ্রুপের মানকে দ্বিতীয় গ্রুপের সাথে তুলনা করা হয়েছে।


৮. Unicode Property Escapes (\p{})

Unicode Property Escapes প্রবর্তন করা হয়েছে ECMAScript 2018 (ES9) এ, যা আপনি ইউনিকোড বৈশিষ্ট্য দিয়ে ক্যারেক্টার মেলানোর সময় ব্যবহার করতে পারবেন।

উদাহরণ:

let regex = /\p{Script=Latin}/u;
let str = "Hello";
console.log(regex.test(str));  // true

এখানে, \p{Script=Latin} ইউনিকোড বৈশিষ্ট্য দিয়ে পরীক্ষা করা হয়েছে যে স্ট্রিংটি ল্যাটিন স্ক্রিপ্টের অক্ষর কিনা।


সারাংশ

ECMAScript এর নতুন সংস্করণগুলোতে RegExp সম্পর্কিত অনেক নতুন ফিচার যোগ করা হয়েছে, যার ফলে RegExp ব্যবহার আরও সহজ, শক্তিশালী এবং পারফরম্যান্সের দিক থেকে কার্যকর হয়েছে। এর মধ্যে উল্লেখযোগ্য নতুন বৈশিষ্ট্যগুলো হলো:

  • y (sticky) ফ্ল্যাগ
  • u (Unicode) ফ্ল্যাগ
  • s (Dotall) ফ্ল্যাগ
  • Named Capture Groups
  • Lookbehind Assertions
  • Lookahead Assertions
  • \k<name> Backreference
  • Unicode Property Escapes

এই নতুন ফিচারগুলো RegExp এর ক্ষমতা বৃদ্ধি করে এবং ব্যবহারকারীদের আরো শক্তিশালী প্যাটার্ন ম্যাচিং তৈরি করতে সাহায্য করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...