Literal ekspresi reguler dapat digunakan untuk memvalidasi string yang disediakan klien. Gunakan string.matches(/pattern/) untuk menguji apakah string mematuhi pola ekspresi reguler. Sintaksis ekspresi reguler tidak identik dengan sintaksis ekspresi reguler umum, khususnya:
*+.()[]{}\berfungsi seperti biasa.- Anchor
^dan$hanya berfungsi jika kita menggunakannya untuk mencocokkan karakter pertama atau terakhir dalam pola. - hanya flag pengubah
i(abaikan huruf besar/kecil) yang didukung
Literal
Literal ekspresi reguler diperkenalkan ke dalam ekspresi keamanan menggunakan notasi /pattern/. Untuk menguji apakah string mematuhi pola ekspresi reguler, gunakan fungsi anggota string yang cocok. Aturan kecocokan berikut memeriksa apakah data baru dimulai dengan string foo.
".validate": "newData.val().matches(/^foo/)"
Fitur yang Didukung
Firebase hanya mendukung subset fitur ekspresi reguler umum. Namun, sintaksis ekspresi reguler akan terasa familiar.
Berikut adalah simbol yang didukung:
| Karakter | Arti |
|---|---|
\s \w \d \S \W \D |
kumpulan karakter yang telah ditentukan sebelumnya untuk mencocokkan spasi kosong, karakter kata, atau digit, dan negasinya (masing-masing) |
\ |
escape, karakter berikut ditafsirkan secara harfiah. Jika Anda ingin mencocokkan "" itu sendiri, escape juga /\/
|
^ |
anchor ke awal string. Ini hanya dapat digunakan sebagai huruf pertama pola.
/a/ cocok dengan "ba", sedangkan /^a/ tidak.
|
$ |
anchor ke akhir string. Ini hanya dapat digunakan sebagai huruf terakhir pola. /a/
cocok dengan "ab", sedangkan /a$/ tidak.
|
* |
cocok dengan nol atau banyak pola sebelumnya. /^a*$/ cocok dengan "" dan "aaa", tetapi tidak dengan "b"
|
+ |
cocok dengan satu atau beberapa pola sebelumnya. /^a+$/ cocok dengan "a" dan "aaa", tetapi tidak dengan ""
|
? |
cocok dengan nol atau satu pola sebelumnya. /^a?$/ cocok dengan "" dan "a", tetapi tidak dengan "aa"
|
. |
cocok dengan karakter apa pun /......../ cocok dengan "Firebase"
|
(pattern) |
tanda kurung mengelompokkan pola menjadi satu unit /(ab)*/ cocok dengan "abab"
|
a|b |
cocok dengan a atau b /a|bc/ cocok dengan "ac" atau "bc"
|
[akz] |
kumpulan karakter, cocok dengan karakter yang disertakan. /[ABCDEF]/ hanya cocok dengan huruf kapital
dari A hingga F.
|
[a-z] |
interval karakter, cocok dengan semua karakter secara inklusif dalam rentang yang ditentukan. /[0-9A-F]+/
cocok dengan string heksadesimal
|
[^0-9] |
^ di awal meniadakan kumpulan karakter, yang cocok dengan apa pun selain kumpulan karakter yang ditentukan.
|
`i` yang mengikuti konstruksi literal ekspresi reguler (misalnya `/yes/i`) menunjukkan bahwa pencocokan akan tidak peka huruf besar/kecil. Pengubah ekspresi reguler lainnya tidak didukung saat ini.
Pencocokan ekspresi reguler dalam Aturan Keamanan Firebase Realtime Database tidak serakah maupun tidak serakah, karena hanya memungkinkan Anda mendeteksi kecocokan dan tidak menangkap bagian string.
Penggunaan
Memerlukan string sebagai tanggal yang diformat sebagai YYYY-MM-DD antara 1900-2099:
".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])$/)"
Memerlukan string sebagai alamat email:
".validate": "newData.isString() && newData.val().matches(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i)"
Memerlukan string sebagai URL dasar:
".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\\-\\.\\?\\,\\'\\/\\\\+&=%\\$#_]*)?$/)"