Literałów wyrażeń regularnych można używać do weryfikowania ciągów znaków dostarczonych przez klienta. Aby sprawdzić, czy ciąg znaków jest zgodny ze wzorcem wyrażenia regularnego, użyj funkcji string.matches(/pattern/). Składnia wyrażeń regularnych nie jest identyczna ze zwykłą składnią wyrażeń regularnych, w szczególności:
*,+,.,(,),[,],{,},\działają normalnie.- Kotwice
^i$działają tylko wtedy, gdy używamy ich do dopasowania pierwszego lub ostatniego znaku we wzorcu. - obsługiwana jest tylko flaga modyfikatora
i(ignorowanie wielkości liter)
Literały
Literał wyrażenia regularnego jest wprowadzany do wyrażenia zabezpieczającego za pomocą notacji /pattern/. Aby sprawdzić, czy ciąg znaków jest zgodny ze wzorcem wyrażenia regularnego, użyj funkcji matches elementu string. Poniższa reguła matches sprawdza, czy nowe dane zaczynają się od ciągu znaków foo.
".validate": "newData.val().matches(/^foo/)"
Obsługiwane funkcje
Firebase obsługuje tylko podzbiór typowych funkcji wyrażeń regularnych. Składnia wyrażeń regularnych powinna jednak być znana.
Oto obsługiwane symbole:
| Postać | Znaczenie |
|---|---|
\s \w \d \S \W \D |
wstępnie zdefiniowane zestawy znaków do dopasowywania białych znaków, znaków słowa lub cyfr oraz ich negacji (odpowiednio) |
\ |
znak modyfikacji, znak następujący jest interpretowany dosłownie. Jeśli chcesz dopasować sam znak „”, musisz go też zmodyfikować: /\/
|
^ |
kotwica na początku ciągu znaków. Można jej używać tylko jako pierwszej litery wzorca.
/a/ pasuje do „ba”, ale /^a/ już nie.
|
$ |
kotwica na końcu ciągu znaków. Można jej używać tylko jako ostatniej litery wzorca. /a/
pasuje do „ab”, ale /a$/ już nie.
|
* |
dopasowuje zero lub wiele wystąpień poprzedniego wzorca. /^a*$/ pasuje do „” i „aaa”, ale nie do „b”.
|
+ |
dopasowuje co najmniej 1 wystąpienie poprzedniego wzorca. /^a+$/ pasuje do „a” i „aaa”, ale nie do „”.
|
? |
dopasowuje zero lub 1 wystąpienie poprzedniego wzorca. /^a?$/ pasuje do „” i „a”, ale nie do „aa”.
|
. |
dopasowuje dowolny znak. /......../ pasuje do „Firebase”.
|
(pattern) |
nawiasy grupują wzorzec w jedną jednostkę /(ab)*/ pasuje do "abab"
|
a|b |
dopasowuje a lub b /a|bc/ pasuje do „ac” lub „bc”.
|
[akz] |
zestaw znaków, dopasowuje dowolny z uwzględnionych znaków. /[ABCDEF]/ pasuje tylko do wielkich
liter od A do F.
|
[a-z] |
przedział znaków, dopasowuje wszystkie znaki w określonym zakresie. /[0-9A-F]+/
pasuje do ciągów szesnastkowych.
|
[^0-9] |
Początkowy znak ^ neguje zestaw znaków, dopasowując wszystko inne niż określony zestaw znaków.
|
Znak i na końcu konstrukcji literału wyrażenia regularnego (np. /yes/i) oznacza, że dopasowanie będzie uwzględniać wielkość liter. Inne modyfikatory wyrażeń regularnych nie są obecnie obsługiwane.
Dopasowywanie wyrażeń regularnych w regułach zabezpieczeń Bazy danych czasu rzeczywistego Firebase nie jest ani zachłanne, ani niezachłanne, ponieważ pozwala tylko wykryć dopasowanie, a nie przechwytywać części ciągu znaków.
Wykorzystanie
Wymagaj, aby ciąg znaków był datą w formacie RRRR-MM-DD w latach 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])$/)"
Wymagaj, aby ciąg znaków był adresem e-mail:
".validate": "newData.isString() && newData.val().matches(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i)"
Wymagaj, aby ciąg znaków był podstawowym adresem 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\\-\\.\\?\\,\\'\\/\\\\+&=%\\$#_]*)?$/)"