फायरबेस सुरक्षा नियम नियमित अभिव्यक्ति

क्लाइंट द्वारा प्रदत्त स्ट्रिंग्स को मान्य करने के लिए नियमित अभिव्यक्ति शाब्दिक का उपयोग किया जा सकता है। यह जांचने के लिए कि कोई स्ट्रिंग रेगुलर एक्सप्रेशन पैटर्न का पालन करती है या string.matches(/pattern/) का उपयोग करें। रेगुलर एक्सप्रेशन सिंटैक्स सामान्य रेगुलर एक्सप्रेशन सिंटैक्स के समान नहीं है, विशेष रूप से:

  • * + . ( ) [ ] { } \ सामान्य रूप से कार्य करें।
  • ^ और $ एंकर केवल तभी काम करते हैं जब हम उनका उपयोग पैटर्न में पहले या आखिरी अक्षर से मिलान करने के लिए कर रहे हैं।
  • केवल i (केस को अनदेखा करें) संशोधक ध्वज समर्थित है

शाब्दिक

एक नियमित अभिव्यक्ति शाब्दिक को /pattern/ नोटेशन का उपयोग करके सुरक्षा अभिव्यक्ति में पेश किया जाता है। यह जांचने के लिए कि क्या कोई स्ट्रिंग नियमित अभिव्यक्ति पैटर्न का पालन करती है, स्ट्रिंग के मिलान सदस्य फ़ंक्शन का उपयोग करें। निम्नलिखित मिलान नियम यह जांचता है कि नया डेटा स्ट्रिंग फू से शुरू होता है या नहीं।

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

समर्थित सुविधाएँ

फायरबेस केवल विशिष्ट नियमित अभिव्यक्ति सुविधाओं के एक सबसेट का समर्थन करता है। हालाँकि, रेगुलर एक्सप्रेशन सिंटैक्स परिचित महसूस होना चाहिए।

ये समर्थित प्रतीक हैं:

चरित्र अर्थ
\s \w \d \S \W \D रिक्त स्थान, एक शब्द वर्ण, या एक अंक, और उनके निषेधों (क्रमशः) से मेल खाने के लिए पूर्वनिर्धारित वर्ण सेट
\ पलायन, निम्नलिखित चरित्र की शाब्दिक व्याख्या की गई है।
यदि आप "" पर ही मिलान करना चाहते हैं, तो इससे भी बचें /\/
^ स्ट्रिंग की शुरुआत में लंगर डालें। इसका उपयोग केवल पैटर्न के पहले अक्षर के रूप में किया जा सकता है।
/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]/ केवल ए से एफ तक बड़े अक्षरों से मेल खाता है।
[az] एक वर्ण अंतराल, निर्दिष्ट सीमा में सभी वर्णों से मेल खाता है।
/[0-9A-F]+/ हेक्साडेसिमल स्ट्रिंग से मेल खाता है
[^0-9] एक अग्रणी ^ निर्दिष्ट वर्ण सेट के अलावा किसी अन्य चीज़ से मेल खाते हुए, वर्ण सेट को अस्वीकार करता है।

नियमित अभिव्यक्ति शाब्दिक निर्माण (जैसे /yes/i ) के पीछे एक 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\\-\\.\\?\\,\\'\\/\\\\+&=%\\$#_]*)?$/)"