রেগেক্স টেস্টার

প্যাটার্ন লিখুন আর প্রসঙ্গসহ প্রতিটি ম্যাচ হাইলাইট হতে দেখুন — কোনো বোতাম নেই, ইঞ্জিন ব্রাউজারের নিজের JavaScript RegExp।

কীভাবে ব্যবহার করবেন

  1. স্ল্যাশ ছাড়া প্যাটার্ন লিখুন আর দরকারি ফ্ল্যাগ চালু করুন: টাইপ করার সঙ্গে ম্যাচ আপডেট হয়, চাপার মতো কোনো বোতাম নেই।
  2. পরীক্ষার টেক্সট পেস্ট করুন। ফলাফল প্যানেলে প্রতিটি ম্যাচ হাইলাইট হয়, আর প্রতিটির অবস্থান, টেক্সট ও ক্যাপচার গ্রুপের তালিকা দেখা যায়।
  3. সব ম্যাচ একবারে কপি করুন, বা প্রতি লাইনে একটি করে টেক্সট ফাইল হিসেবে ডাউনলোড করুন।

উদাহরণ

প্যাটার্ন ও টেক্সট

(\w+)@(\w+)\.(\w+)

যোগাযোগ: rafiq@example.com অথবা nusrat@example.org।

ম্যাচ

ম্যাচ: 2
#1 [9–26] rafiq@example.com
   1: rafiq  2: example  3: com
#2 [32–50] nusrat@example.org
   1: nusrat  2: example  3: org

প্রথম লাইনটি প্যাটার্ন (স্ল্যাশ লাগে না), বাকিটা পরীক্ষার টেক্সট। রেঞ্জগুলো 0-ভিত্তিক, শেষ বাদ দেওয়া অফসেট — JavaScript যে সংখ্যা match.index-এ দেয়, সেগুলোই। গ্লোবাল ম্যাচিং সবসময় চালু, তাই g টগল না থাকলেও সব ঘটনা খুঁজে পাওয়া যায়।

নিয়ম, সীমাবদ্ধতা ও পরিচিত সমস্যা

  • ইঞ্জিন ব্রাউজারের নিজের JavaScript RegExp: PCRE, Python, Go বা RE2 ফ্লেভার নেই, ফ্লেভার বাছার সুবিধাও নেই। \A, \z এবং (?i)-এর মতো ইনলাইন ফ্ল্যাগ সমর্থিত নয়।
  • গ্লোবাল ম্যাচিং সবসময় চালু; ফ্ল্যাগ কেবল i, m, s ও u। y (স্টিকি), d (ইনডেক্স) ও v (ইউনিকোড সেট) দেওয়া হয় না।
  • /…/ স্ল্যাশগুলো শুধু সাজসজ্জা: প্যাটার্নের ভেতরে / এখানে এস্কেপ করতে হয় না, JavaScript লিটারেলের মতো নয়। পাশে দেখানো ফ্ল্যাগই কোডে হুবহু ব্যবহার করার স্ট্রিং।
  • সিনট্যাক্স ত্রুটি হলে স্থানীয়কৃত উপসর্গের পরে ব্রাউজারের নিজের বার্তা (ইংরেজিতে) দেখায়; ব্রাউজারভেদে শব্দচয়ন আলাদা।
  • পরীক্ষার টেক্সট খালি থাকলে ফলাফল আসে না — পরীক্ষা করার লাইন নেই, তাই ^$-এর মতো প্যাটার্ন এখানে যাচাই করা যায় না।
  • সর্বোচ্চ 2000টি ম্যাচ সংগ্রহ হয় (তখন গণনা 2000+ দেখায়) আর তালিকায় প্রথম 200টি রেন্ডার হয়। দুটি সীমাই জানানো হয়, নীরবে কেটে দেওয়া হয় না।
  • 100,000 অক্ষরের বেশি টেক্সটও টাইপের সঙ্গে আপডেট হয়, তবে ফলাফল দেখাতে বেশি দেরি হয়।
  • ভয়ানক ব্যাকট্র্যাকিং ট্যাব জমিয়ে দিতে পারে: JavaScript রেগেক্স সিনক্রোনাসভাবে চলে ও থামানো যায় না, তাই টাইমআউট নেই। অবিশ্বস্ত প্যাটার্ন বা বিশাল টেক্সট পেস্ট করবেন না।
  • \w, \b ও \d u ফ্ল্যাগসহও কেবল ASCII — বাংলা বা আরবি অক্ষর মেলাতে \p{L} ও u ফ্ল্যাগ ব্যবহার করুন। u ছাড়া \p{L} ত্রুটি নয়: নীরবে আক্ষরিক ম্যাচে নেমে যায়।
  • i ইউনিকোড সরল কেস ফোল্ডিং ব্যবহার করে, লোকেল নিয়ম নয়: তুর্কি İ ও i পরস্পরকে মেলে না, আর ß থেকে SS হয় না।
  • রেঞ্জ 0-ভিত্তিক, শেষ বাদ দেওয়া UTF-16 অফসেট, তাই একটি ইমোজি দুটি হিসেবে গোনা হয়। যে গ্রুপ অংশ নেয়নি তা — দেখায়; যে গ্রুপ খালি স্ট্রিং মেলেছে তা খালি দেখায়।
  • শূন্য-দৈর্ঘ্যের ম্যাচ (\b, a*, (?=x)) পাতলা চিহ্ন হিসেবে দেখায় আর তাদের রেঞ্জ n–n লেখা হয়।
  • কপি ও ডাউনলোডে কেবল মিলে যাওয়া মান থাকে, প্রতি লাইনে একটি, সংখ্যা-রেঞ্জ-গ্রুপ ছাড়া। তাই লাইন-ব্রেকযুক্ত ম্যাচ কয়েক লাইনে ছড়ায়।
  • সাবস্টিটিউশন প্রিভিউ, কোড জেনারেটর, পার্মালিংক বা সংরক্ষিত প্যাটার্ন নেই: প্যাটার্ন ইনপুট বাক্স ছাড়ে না, URL-এও যায় না।

প্যাটার্ন ঠিক হয়ে গেলে সাধারণত এগুলোই পরের ধাপ।