ক্লায়েন্ট কর্তৃক সরবরাহকৃত স্ট্রিং যাচাই করার জন্য রেগুলার এক্সপ্রেশন লিটারেল ব্যবহার করা যেতে পারে। কোনো স্ট্রিং একটি রেগুলার এক্সপ্রেশন প্যাটার্ন মেনে চলে কিনা তা পরীক্ষা করতে string.matches(/pattern/) ব্যবহার করুন। রেগুলার এক্সপ্রেশনের সিনট্যাক্স সাধারণ রেগুলার এক্সপ্রেশন সিনট্যাক্সের মতো হুবহু এক নয়, বিশেষ করে:
-
*+.()[]{}\স্বাভাবিকভাবে কাজ করবে। -
^এবং$অ্যাঙ্কর শুধুমাত্র তখনই কাজ করে, যখন আমরা প্যাটার্নের প্রথম বা শেষ অক্ষর মেলানোর জন্য এগুলো ব্যবহার করি। - শুধুমাত্র
i(কেস উপেক্ষা) মডিফায়ার ফ্ল্যাগটি সমর্থিত।
আক্ষরিক
/pattern/ নোটেশন ব্যবহার করে একটি সিকিউরিটি এক্সপ্রেশনে রেগুলার এক্সপ্রেশন লিটারেল অন্তর্ভুক্ত করা হয়। কোনো স্ট্রিং একটি রেগুলার এক্সপ্রেশন প্যাটার্ন মেনে চলে কিনা তা পরীক্ষা করতে, string-এর matches মেম্বার ফাংশনটি ব্যবহার করুন। নিম্নলিখিত matches রুলটি পরীক্ষা করে দেখে যে নতুন ডেটাটি ‘foo’ স্ট্রিং দিয়ে শুরু হয় কিনা।
".validate": "newData.val().matches(/^foo/)"
সমর্থিত বৈশিষ্ট্য
ফায়ারবেস প্রচলিত রেগুলার এক্সপ্রেশন ফিচারগুলোর কেবল একটি ক্ষুদ্র অংশই সমর্থন করে। তবে, রেগুলার এক্সপ্রেশনের সিনট্যাক্সটি আপনার কাছে পরিচিত মনে হবে।
এগুলো হলো সমর্থিত প্রতীকসমূহ:
| চরিত্র | অর্থ |
|---|---|
\s \w \d \S \W \D | যথাক্রমে হোয়াইটস্পেস, কোনো শব্দ অক্ষর বা সংখ্যা মেলানোর জন্য পূর্বনির্ধারিত অক্ষর সেট এবং তাদের বিপরীতার্থক রূপ। |
\ | escape, এর পরের অক্ষরটিকে আক্ষরিকভাবে ব্যাখ্যা করা হয়। যদি আপনি সরাসরি "" এর সাথেই মেলাতে চান, তাহলে এটিকে /\/ এস্কেপ করুন। |
^ | স্ট্রিং-এর শুরুতে অ্যাঙ্কর করুন। এটি শুধুমাত্র প্যাটার্নের প্রথম অক্ষর হিসেবে ব্যবহার করা যাবে।/a/ "ba"-এর সাথে মেলে, কিন্তু /^a/ মেলে না। |
$ | সুতার শেষ প্রান্তে নোঙর করুন। এটি শুধুমাত্র প্যাটার্নের শেষ অক্ষর হিসেবে ব্যবহার করা যাবে।/a/ 'ab'-এর সাথে মেলে, কিন্তু /a$/ মেলে না। |
* | পূর্ববর্তী প্যাটার্নের শূন্য বা অনেকগুলোর সাথে মেলে।/^a*$/ "" এবং "aaa" এর সাথে মেলে, কিন্তু "b" এর সাথে মেলে না। |
+ | পূর্ববর্তী প্যাটার্নের এক বা একাধিকের সাথে মেলে।/^a+$/ 'a' এবং 'aaa'-কে ম্যাচ করে, কিন্তু '" কে নয়। |
? | পূর্ববর্তী প্যাটার্নের শূন্য বা একটির সাথে মেলে।/^a?$/ "" এবং "a" কে মেলায়, কিন্তু "aa" কে মেলায় না। |
. | যেকোনো চরিত্রের সাথে মেলে/......../ 'ফায়ারবেস'-এর সাথে মেলে |
(pattern) | বন্ধনী একটি প্যাটার্নকে একক ইউনিটে একত্রিত করে/(ab)*/ "abab"-এর সাথে মেলে |
a|b | হয় a অথবা b এর সাথে মেলে/a|bc/ "ac" বা "bc"-এর সাথে মেলে। |
[akz] | একটি অক্ষর সেট, যা অন্তর্ভুক্ত যেকোনো অক্ষরের সাথে মেলে।/[ABCDEF]/ শুধুমাত্র A থেকে F পর্যন্ত বড় হাতের অক্ষরগুলোকে মেলায়। |
[az] | একটি অক্ষর ব্যবধান, যা নির্দিষ্ট পরিসরের অন্তর্ভুক্ত সকল অক্ষরকে মেলায়।/[0-9A-F]+/ হেক্সাডেসিমাল স্ট্রিংগুলির সাথে মেলে |
[^0-9] | শুরুতে একটি ^ চিহ্ন থাকলে তা ক্যারেক্টার সেটকে বাতিল করে দেয় এবং নির্দিষ্ট ক্যারেক্টার সেট ছাড়া অন্য যেকোনো কিছুর সাথে মিলে যায়। |
রেগুলার এক্সপ্রেশন লিটারেল গঠনের শেষে একটি i থাকলে (যেমন /yes/i ) বোঝা যায় যে ম্যাচিংটি কেস-ইনসেনসিটিভ হবে। এই মুহূর্তে অন্যান্য রেগুলার এক্সপ্রেশন মডিফায়ার সমর্থিত নয়।
ফায়ারবেস রিয়েলটাইম ডেটাবেস সিকিউরিটি রুলস-এ রেগুলার এক্সপ্রেশন ম্যাচিং গ্রিডি বা নন-গ্রিডি কোনোটিই নয়, কারণ এটি আপনাকে শুধুমাত্র একটি মিল খুঁজে বের করার সুযোগ দেয়, স্ট্রিং-এর কোনো অংশবিশেষ ক্যাপচার করার সুযোগ দেয় না।
ব্যবহার
একটি স্ট্রিংকে অবশ্যই ১৯০০ থেকে ২০৯৯ সালের মধ্যে 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\\-\\.\\?\\,\\'\\/\\\\+&=%\\$#_]*)?$/)"