ফায়ারবেস নিরাপত্তা নিয়ম রেগুলার এক্সপ্রেশন

ক্লায়েন্ট সরবরাহকৃত স্ট্রিং যাচাই করতে নিয়মিত এক্সপ্রেশন লিটারেল ব্যবহার করা যেতে পারে। একটি স্ট্রিং একটি রেগুলার এক্সপ্রেশন প্যাটার্ন মেনে চলে কিনা তা পরীক্ষা করতে string.matches(/pattern/) ব্যবহার করুন। রেগুলার এক্সপ্রেশন সিনট্যাক্স সাধারণ রেগুলার এক্সপ্রেশন সিনট্যাক্সের মতো নয়, বিশেষ করে:

  • * + . ( ) [ ] { } \ স্বাভাবিক হিসাবে কাজ করুন।
  • ^ এবং $ অ্যাঙ্করগুলি শুধুমাত্র তখনই কাজ করে যখন আমরা সেগুলিকে প্যাটার্নের প্রথম বা শেষ অক্ষরের সাথে মেলানোর জন্য ব্যবহার করি।
  • শুধুমাত্র i (কেস উপেক্ষা করুন) মডিফায়ার পতাকা সমর্থিত

আক্ষরিক

একটি নিয়মিত অভিব্যক্তি আক্ষরিক /pattern/ স্বরলিপি ব্যবহার করে একটি নিরাপত্তা অভিব্যক্তিতে প্রবর্তিত হয়। একটি স্ট্রিং একটি রেগুলার এক্সপ্রেশন প্যাটার্ন মেনে চলে কিনা তা পরীক্ষা করতে, স্ট্রিং এর মেল মেম্বার ফাংশন ব্যবহার করুন। নতুন ডেটা স্ট্রিং foo দিয়ে শুরু হয় কিনা তা নিচের ম্যাচের নিয়ম চেক করে।

".validate": "newData.val().matches(/^foo/)"

সমর্থিত বৈশিষ্ট্য

Firebase শুধুমাত্র সাধারণ রেগুলার এক্সপ্রেশন বৈশিষ্ট্যের একটি উপসেট সমর্থন করে। যাইহোক, নিয়মিত অভিব্যক্তি সিনট্যাক্স পরিচিত বোধ করা উচিত.

এই সমর্থিত প্রতীক:

চরিত্র অর্থ
\s \w \d \S \W \D হোয়াইটস্পেস, একটি শব্দের অক্ষর, বা একটি অঙ্ক, এবং তাদের অস্বীকারের জন্য পূর্বনির্ধারিত অক্ষর সেট (যথাক্রমে)
\ escape, নিম্নলিখিত চরিত্রটি আক্ষরিক অর্থে ব্যাখ্যা করা হয়।
যদি আপনি নিজেই "" এর সাথে মিলতে চান তবে এটি থেকেও এড়িয়ে যান /\/
^ স্ট্রিং শুরুতে নোঙ্গর. এটি শুধুমাত্র প্যাটার্নের প্রথম অক্ষর হিসাবে ব্যবহার করা যেতে পারে।
/a/ "ba" মেলে, যখন /^a/ হয় না।
$ স্ট্রিং শেষে নোঙ্গর. এটি শুধুমাত্র প্যাটার্নের শেষ অক্ষর হিসাবে ব্যবহার করা যেতে পারে।
/a/ "ab" মেলে, যখন /a$/ হয় না।
* শূন্য বা পূর্ববর্তী প্যাটার্নের অনেকের সাথে মেলে।
/^a*$/ মেলে "" এবং "aaa", কিন্তু "b" নয়
+ এক বা একাধিক পূর্ববর্তী প্যাটার্নের সাথে মেলে।
/^a+$/ "a" এবং "aaa" মেলে, কিন্তু "" নয়
? শূন্য বা পূর্ববর্তী প্যাটার্নের একটির সাথে মেলে।
/^a?$/ মেলে "" এবং "a" কিন্তু "aa" নয়
. যে কোন চরিত্রের সাথে মিলে যায়
/......../ মেলে "ফায়ারবেস"
(pattern) বন্ধনী একটি প্যাটার্নকে একক ইউনিটে গোষ্ঠীভুক্ত করে
/(ab)*/ মেলে "আবাব"
a|b হয় a বা b মেলে
/a|bc/ মেলে "ac" বা "bc"
[akz] একটি অক্ষর সেট, যে কোনো অন্তর্ভুক্ত অক্ষরের সাথে মেলে।
/[ABCDEF]/ শুধুমাত্র A থেকে F পর্যন্ত বড় বড় অক্ষর মেলে।
[az] একটি অক্ষর ব্যবধান, নির্দিষ্ট পরিসরে সব অক্ষরের সাথে মিলে যায়।
/[0-9A-F]+/ হেক্সাডেসিমেল স্ট্রিং এর সাথে মেলে
[^0-9] একটি অগ্রণী ^ অক্ষর সেটকে অস্বীকার করে, নির্দিষ্ট অক্ষর সেট ব্যতীত অন্য কিছুর সাথে মেলে।

i এক্সপ্রেশন আক্ষরিক নির্মাণ (যেমন /yes/i ) এর পিছনে থাকা একটি ইঙ্গিত দেয় যে মিলটি কেস সংবেদনশীল হবে। অন্যান্য রেগুলার এক্সপ্রেশন মডিফায়ার এই সময়ে সমর্থিত নয়।

ফায়ারবেস রিয়েলটাইম ডেটাবেস নিরাপত্তা নিয়মে নিয়মিত এক্সপ্রেশন ম্যাচিং লোভী বা অ-লোভী নয়, কারণ এটি আপনাকে শুধুমাত্র একটি মিল সনাক্ত করতে দেয় এবং স্ট্রিংয়ের অংশগুলি ক্যাপচার করতে দেয় না।

ব্যবহার

1900-2099-এর মধ্যে YYYY-MM-DD হিসাবে ফর্ম্যাট করা একটি তারিখ হতে একটি স্ট্রিং প্রয়োজন:

".validate": "newData.isString() && newData.val().matches(/^(19|20)[0-9][0-9][-\\/. ](0[1-9]|1[012])[-\\/. ](0[1-9]|[12][0-9]|3[01])$/)"

একটি ইমেল ঠিকানা হতে স্ট্রিং প্রয়োজন:

".validate": "newData.isString() && newData.val().matches(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i)"

একটি মৌলিক URL হতে স্ট্রিং প্রয়োজন:

".validate": "newData.isString() && newData.val().matches(/^(ht|f)tp(s?):\\/\\/[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*((0-9)*)*(\\/?)([a-zA-Z0-9\\-\\.\\?\\,\\'\\/\\\\+&=%\\$#_]*)?$/)"