আপনার ব্রাউজারে regex কীভাবে কাজ করে?
প্রতিটি JavaScript runtime একটি native regular expression engine ship করে — new RegExp(pattern, flags) আপনার pattern compile করে, তারপর String.prototype.match, String.prototype.replace, এবং RegExp.prototype.exec-এর মতো method এটি যেকোনো input string-এর বিরুদ্ধে চালায়। এই tester সেই engine-কে UI-তে wrap করে যাতে আপনি browser ছাড়া না গিয়ে pattern edit, run, ও inspect করতে পারেন। আপনি টাইপ করা কিছুই — pattern, flag, test string, বা replacement — network-এ পাঠানো হয় না।
Regex tester কীভাবে কাজ করে?
Pipeline কয়েকটি সংক্ষিপ্ত ধাপ, সব প্রতিটি keystroke-এ client-side চলে (typing fluid রাখতে 150 ms debounced):
- আপনার pattern body উপরের input থেকে পড়া হয় (leading বা trailing
/delimiter নেই — এগুলো decorative)। নির্বাচিত flag pill গুলোgiবাgimsuy-এর মতো flags string-এ concatenate হয়। new RegExp(patternBody, flags)pattern compile করে। engineSyntaxErrorthrow করলে (যেমন unmatched parenthesis বা invalid escape), message test string-এর উপরে render হয় এবং match list cleared হয়। compile error হলো V8 / SpiderMonkey / JavaScriptCore থেকে actualerr.messageতাই এটি DevTools-এ যা দেখবেন তার সাথে মিলে।- Match list-এর জন্য, tester সর্বদা synthetic global flag দিয়ে enumerate করে — তাই
gবন্ধ করলেও, list সব match দেখায়। Standard zero-width-match guard (if (m.index === rx.lastIndex) rx.lastIndex++) loop-কে empty string match করা pattern-এ spinning থেকে রক্ষা করে। Replace মোড আপনার real flag set মেনে চলে তাই$&String.prototype.replace-এর মতোই আচরণ করে। - প্রতিটি iteration-এর মধ্যে tester
performance.now() - startপরীক্ষা করে এবং 50 ms অতিক্রম হলে বাতিল করে। এটি(a+)+$-এর মতো pathological pattern-এ catastrophic backtracking-এর বিরুদ্ধে রক্ষা করে — না হলে ট্যাব hang করত। Guard হলো best-effort: একটি pathological single-match pattern এখনো একexeccall-এর ভেতরে সময় নিতে পারে। সেক্ষেত্রে ট্যাব refresh করুন এবং non-greedy quantifier বা atomic-style possessive দিয়ে pattern পুনর্লিখন করুন (যেমন[^x]*x)। - Test string প্রতিটি match-এর range-এ segment-এ বিভক্ত হয় এবং matched segment গুলো
<mark class="rx-match rx-cap-N">element-এ wrapped হয়, যেখানেNছয়টি palette রং-এর মধ্য দিয়ে cycle করে যাতে adjacent match একনজরে আলাদা করা যায়। প্রতিটি match-এর numbered group (m[1],m[2], …) এবং named group (m.groups) নিচে labeled row হিসেবে render হয়;dflag সেট থাকলে per-group[start, end]index-ও দেখানো হয়।
এই regex tester কেন ব্যবহার করবেন?
- গোপনীয়তা: প্রতিটি pattern, test string, এবং replacement built-in JavaScript RegExp engine ব্যবহার করে আপনার ব্রাউজারে চলে। কিছু ট্যাব ছাড়ে না — গুরুত্বপূর্ণ যখন ইনপুট customer log, leaked credential pattern, বা অন্য কিছু যা আপনি hosted SaaS regex playground-এ paste করবেন না।
- সৎ flavor: tester ঠিক সেই regex engine expose করে যা Node.js, Chrome, Safari, Firefox, এবং প্রতিটি browser-based form validator চালায়। কোনো Perl-flavor translation layer নেই যা সূক্ষ্ম পার্থক্য লুকায় — এখানে যা কাজ করে তা আপনার code-এও কাজ করে।
- Capture ও named-group debugging: প্রতিটি numbered group (
$1,$2, …) এবং named group ($<year>) প্রতিটি match-এর জন্য দেখানো হয় যাতে আপনি অনুমান না করে parser তৈরি করতে এবং slot পড়তে পারেন। Replace মোড group মিশিয়ে ব্যবহার করতে দেয় —$2-$1প্রথম দুটি slot swap করে,$<name>named slot ঢোকায়, এবং$&সম্পূর্ণ match echo করে। - Catastrophic-backtracking guard: enumeration-এ 50 ms ceiling
(a+)+$-এর মতো pathological pattern ট্যাব freeze করার আগেই বাতিল করে। আপনি hung browser-এর পরিবর্তে একটি ব্যাখ্যামূলক error দেখেন, এবং পেজ তাৎক্ষণিকভাবে recover করে।
Regex tester-এর সাধারণ প্রয়োগ কী?
Regular expression web development, security, এবং ডেটা কাজ জুড়ে দেখা যায় — এই tester সবচেয়ে সাধারণ use case target করে:
- Form validation: email, phone, বা postal-code pattern prototype করুন, test string-এ sample input paste করুন, এবং production code-এ pattern ship করার আগে নিশ্চিত করুন প্রতিটি positive case match করছে এবং প্রতিটি negative case করছে না।
- Log scraping: NGINX, application, বা audit-log আউটপুটের একটি chunk paste করুন, আপনার প্রয়োজনীয় অংশের জন্য named group সহ pattern লিখুন (
(?<ip>…) (?<path>…)), এবং প্রতিটি match-এর captured slot পড়ুন নিশ্চিত করতে যে আপনার parser সঠিক। - Refactor search-and-replace: snippet জুড়ে identifier rewrite করতে Replace মোড ব্যবহার করুন —
(\w+)\.set(\w+)\(→$1.$2 =getter call-কে property assignment-এ রূপান্তর করে, এবং লাইভ preview codemod-এ commit করার আগে ফলাফল দেখায়।
Regex উদাহরণ কেমন দেখায়?
g flag সহ pattern (\d{4})-(\d{2})-(\d{2}) নিন, test string release 2025-11-15, prerelease 2026-05-25-এর বিরুদ্ধে চালান। Engine দুটো match খুঁজে পায়। প্রথম match হলো 2025-11-15 group 1 = 2025, group 2 = 11, group 3 = 15 সহ। দ্বিতীয় match হলো 2026-05-25 একই group shape সহ। Replace মোডে, replacement template $3/$2/$1 উভয় date 15/11/2025 ও 25/05/2026-এ rewrite করে — একটি one-pattern ISO-to-DMY রূপান্তর যা script-এ pattern plug করার আগে visually verify করা যায়।
যেকোনো regex কাজের জন্য এই tester দ্রুত পথ হিসেবে ব্যবহার করুন — pattern তৈরি করা, debug করা, বা rewrite করা। সবকিছু locally চলে; কিছু log হয় না; regex engine আপনার browser যা ship করে তাই, তাই আচরণ production code runtime-এ যা দেখবে তার সাথে মিলে।