Normal ifade sabit değerleri, istemci tarafından sağlanan dizeleri doğrulamak için kullanılabilir. Bir dizenin normal ifade kalıbına bağlı olup olmadığını test etmek için string.matches(/pattern/)
kullanın. Normal ifade söz dizimi, yaygın normal ifadelerin söz dizimiyle aynı değildir. Özellikle:
*
+
.
(
)
[
]
{
}
\
normal şekilde çalışır.^
ve$
çapaları yalnızca bunları kalıptaki ilk veya son karakteri eşleştirmek için kullandığımızda çalışır.- yalnızca
i
(büyük/küçük harfe duyarlı değil) değiştirici işareti desteklenir
Değişmez değerler
Bir normal ifade değişmez değeri, /pattern/
gösterimi kullanılarak bir güvenlik ifadesine eklenir. Bir dizenin normal ifade kalıbına bağlı olup olmadığını test etmek için dizenin "eşleşenler" üye işlevini kullanın. Aşağıdaki eşleşme kuralı, yeni verilerin foo dizesiyle başlayıp başlamadığını kontrol eder.
".validate": "newData.val().matches(/^foo/)"
Desteklenen Özellikler
Firebase, tipik normal ifade özelliklerinin yalnızca bir alt kümesini destekler. Ancak normal ifade söz dizimi size tanıdık gelecektir.
Desteklenen simgeler şunlardır:
Karakter | Anlamı |
---|---|
\s \w \d \S \W \D |
boşluk, kelime karakteri veya rakamla eşleşen önceden tanımlanmış karakter kümeleri ve bunların olumsuzlukları (sırasıyla) |
\ |
kod dışı bırakmaya çalışın. Ardından, takip eden karakter kelimesi kelimesine yorumlanır. "" ayarında eşlemek istiyorsanız ondan da kaçın /\/
|
^ |
dizenin başına sabitleyin. Bu yalnızca, kalıbın ilk harfi olarak kullanılabilir.
/a/ , "ba" ile eşleşir, /^a/ ise eşleşmez.
|
$ |
dizenin sonuna sabitleyin. Bu yalnızca kalıbın son harfi olarak kullanılabilir. /a/ "ab" ile eşleşir, /a$/ ise eşleşmez.
|
* |
önceki kalıbın sıfır veya çoğuyla eşleşir. /^a*$/ , "" ile eşleşiyor ve "aaa" yer alır ancak "b" ile aynı değildir
|
+ |
önceki kalıbın bir veya daha fazlasıyla eşleşir. /^a+$/ , "a" ile eşleşiyor ve "aaa" yazın, ancak "" değil
|
? |
önceki kalıptan sıfır veya biriyle eşleşir. /^a?$/ , "" ile eşleşiyor ve "a" olmalı, "aa" kullanılamaz
|
. |
herhangi bir karakterle eşleşir /......../ "Firebase" ile eşleşir
|
(pattern) |
parantez, bir kalıbı tek bir birim halinde gruplandırır /(ab)*/ , "abab" ile eşleşir
|
a|b |
a veya b ile eşleşir /a|bc/ "ac" ile eşleşir veya "bc"
|
[akz] |
dahil edilen karakterlerin herhangi biriyle eşleşir. /[ABCDEF]/ eşleşmede yalnızca büyük harf kullanımı
harfler (A'dan F'ye)
|
[a-z] |
karakter aralığı, belirtilen aralıktaki tüm karakterleri de dahil ederek eşleştirir. /[0-9A-F]+/ onaltılık dizelerle eşleşir |
[^0-9] |
Baştaki ^ , belirtilen karakter kümesi dışındaki tüm öğelerle eşleşen karakter kümesini geçersiz kılar.
|
Düz normal ifade yapısının ardından gelen i
(ör. /yes/i
), eşleşmenin büyük/küçük harfe duyarlı olmayacağını gösterir. Diğer normal ifade değiştiricileri şu anda desteklenmemektedir.
Firebase Realtime Database Security Rules içinde normal ifade eşleşmesi, yalnızca bir eşleşmeyi tespit etmenize ve dizenin bölümlerini yakalamanıza olanak tanımadığından, açgözlü veya açgözlü değildir.
Kullanım
Dizenin 1900-2099 arasında YYYY-AA-GG biçiminde bir tarih olmasını zorunlu kılın:
".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])$/)"
Dizenin e-posta adresi olmasını zorunlu kılın:
".validate": "newData.isString() && newData.val().matches(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i)"
Dizenin temel URL olmasını gerektir:
".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\\-\\.\\?\\,\\'\\/\\\\+&=%\\$#_]*)?$/)"