§

প্যাটার্ন

Flag
§

পরীক্ষার স্ট্রিং

§

Match

০টি match

    এখনো কোনো match নেই — উপরে একটি pattern ও test string টাইপ করুন।

    §

    Replace মোড

    দ্রুত রেফারেন্স

    Character class

    \d
    যেকোনো digit, [0-9]-এর সমতুল্য।
    \w
    যেকোনো word character — অক্ষর, digit, বা underscore।
    \s
    যেকোনো whitespace — space, tab, newline, ইত্যাদি।

    Anchor

    \b
    Word boundary-তে একটি zero-width assertion।
    ^
    ইনপুটের শুরু (বা m flag সেট থাকলে প্রতিটি লাইনের শুরু)।
    $
    ইনপুটের শেষ (বা m flag সেট থাকলে প্রতিটি লাইনের শেষ)।

    Quantifier

    *
    আগের token-এর শূন্য বা তার বেশি, greedy।
    +
    আগের token-এর এক বা তার বেশি, greedy।
    ?
    আগের token-এর শূন্য বা একটি — পূর্ববর্তী quantifier-কেও lazy করে।
    {n,m}
    আগের token-এর n থেকে m পর্যন্ত repetition।

    Group

    (...)
    Capturing group — replacement-এ $1, $2, … হিসেবে exposed।
    (?:...)
    Non-capturing group — slot না নিয়ে group করে।
    (?...)
    Named capturing group — replacement-এ $ হিসেবে exposed।

    Lookaround

    (?=...)
    Positive lookahead — শুধুমাত্র … দ্বারা followed হলে match করুন
    (?!...)
    Negative lookahead — … দ্বারা followed না হলেই match করুন
    (?<=...)
    Positive lookbehind — শুধুমাত্র … দ্বারা preceded হলে match করুন
    (?
    Negative lookbehind — … দ্বারা preceded না হলেই match করুন

    Escape

    \\
    একটি literal backslash character।
    \.
    একটি literal dot — যেকোনো metacharacter literally match করতে escape করুন।

    বাংলাদেশ ও পশ্চিমবঙ্গের ডেভেলপাররা প্রতিদিন JavaScript regular expression ব্যবহার করেন: React form-এ input validation, commit message convention match করা, log file parse করা, বা phone number ও email format নিশ্চিত করা। এই tester প্রতিটি pattern browser-এর native `RegExp` constructor-এর বিরুদ্ধে production-এর মতোই চালায়, capture-group inspection, flag toggle, এবং লাইভ highlight সহ — আপনি এখানে যা test করেন তা production-এ ship করার সময় bit-identical।

    আপনার ব্রাউজারে 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):

    1. আপনার pattern body উপরের input থেকে পড়া হয় (leading বা trailing / delimiter নেই — এগুলো decorative)। নির্বাচিত flag pill গুলো gi বা gimsuy-এর মতো flags string-এ concatenate হয়।
    2. new RegExp(patternBody, flags) pattern compile করে। engine SyntaxError throw করলে (যেমন unmatched parenthesis বা invalid escape), message test string-এর উপরে render হয় এবং match list cleared হয়। compile error হলো V8 / SpiderMonkey / JavaScriptCore থেকে actual err.message তাই এটি DevTools-এ যা দেখবেন তার সাথে মিলে।
    3. 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-এর মতোই আচরণ করে।
    4. প্রতিটি iteration-এর মধ্যে tester performance.now() - start পরীক্ষা করে এবং 50 ms অতিক্রম হলে বাতিল করে। এটি (a+)+$-এর মতো pathological pattern-এ catastrophic backtracking-এর বিরুদ্ধে রক্ষা করে — না হলে ট্যাব hang করত। Guard হলো best-effort: একটি pathological single-match pattern এখনো এক exec call-এর ভেতরে সময় নিতে পারে। সেক্ষেত্রে ট্যাব refresh করুন এবং non-greedy quantifier বা atomic-style possessive দিয়ে pattern পুনর্লিখন করুন (যেমন [^x]*x)।
    5. 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 হয়; d flag সেট থাকলে 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/202525/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-এ যা দেখবে তার সাথে মিলে।