Bạn có thể sử dụng các chữ cố định của biểu thức chính quy để xác thực các chuỗi do máy khách cung cấp. Sử dụng string.matches(/pattern/) để kiểm tra xem một chuỗi có tuân thủ mẫu biểu thức chính quy hay không. Cú pháp biểu thức chính quy không giống với cú pháp biểu thức chính quy thông thường, cụ thể là:
*+.()[]{}\hoạt động bình thường.- Các mỏ neo
^và$chỉ hoạt động nếu chúng ta dùng chúng để so khớp ký tự đầu tiên hoặc cuối cùng trong mẫu. - chỉ cờ sửa đổi
i(không phân biệt chữ hoa chữ thường) được hỗ trợ
Giá trị cố định
Một biểu thức chính quy được đưa vào biểu thức bảo mật bằng ký hiệu /pattern/. Để kiểm tra xem một chuỗi có tuân thủ một mẫu biểu thức chính quy hay không, hãy dùng hàm thành viên matches của chuỗi. Quy tắc so khớp sau đây kiểm tra xem dữ liệu mới có bắt đầu bằng chuỗi foo hay không.
".validate": "newData.val().matches(/^foo/)"
Các tính năng được hỗ trợ
Firebase chỉ hỗ trợ một số tính năng biểu thức chính quy thông thường. Tuy nhiên, cú pháp biểu thức chính quy sẽ quen thuộc với bạn.
Sau đây là các ký hiệu được hỗ trợ:
| Nhân vật | Ý nghĩa |
|---|---|
\s \w \d \S \W \D |
các bộ ký tự được xác định trước để khớp với khoảng trắng, ký tự từ hoặc chữ số và các ký tự phủ định của chúng (tương ứng) |
\ |
thoát, ký tự sau được diễn giải theo nghĩa đen. Nếu bạn muốn so khớp trên "" thì cũng hãy thoát khỏi nó /\/
|
^ |
neo vào đầu chuỗi. Bạn chỉ có thể dùng ký tự này làm chữ cái đầu tiên của mẫu.
/a/ khớp với "ba", trong khi /^a/ thì không.
|
$ |
neo vào cuối chuỗi. Bạn chỉ có thể sử dụng ký tự này làm chữ cái cuối cùng của mẫu. /a/ khớp với "ab", trong khi /a$/ thì không.
|
* |
khớp với 0 hoặc nhiều mẫu đứng trước. /^a*$/ khớp với "" và "aaa", nhưng không khớp với "b"
|
+ |
khớp với một hoặc nhiều mẫu trước đó. /^a+$/ khớp với "a" và "aaa", nhưng không khớp với ""
|
? |
khớp với 0 hoặc 1 mẫu đứng trước. /^a?$/ khớp với "" và "a", nhưng không khớp với "aa"
|
. |
khớp với mọi ký tự /......../ khớp với "Firebase"
|
(pattern) |
dấu ngoặc đơn nhóm một mẫu thành một đơn vị /(ab)*/ khớp với "abab"
|
a|b |
khớp với a hoặc b /a|bc/ khớp với "ac" hoặc "bc"
|
[akz] |
một bộ ký tự, khớp với bất kỳ ký tự nào trong số các ký tự được đưa vào. /[ABCDEF]/ chỉ khớp các chữ cái viết hoa từ A đến F.
|
[a-z] |
khoảng ký tự, khớp với tất cả các ký tự trong phạm vi đã chỉ định. /[0-9A-F]+/
khớp các chuỗi thập lục phân
|
[^0-9] |
^ ở đầu phủ định bộ ký tự, khớp với mọi thứ khác ngoài bộ ký tự được chỉ định.
|
Ký tự i theo sau cấu trúc chữ cố định của biểu thức chính quy (ví dụ: /yes/i) cho biết quá trình so khớp sẽ không phân biệt chữ hoa chữ thường. Hiện tại, các hệ số sửa đổi biểu thức chính quy khác không được hỗ trợ.
Tính năng so khớp biểu thức chính quy trong Quy tắc bảo mật của Cơ sở dữ liệu theo thời gian thực của Firebase không phải là tham lam cũng không phải là không tham lam, vì tính năng này chỉ cho phép bạn phát hiện một kết quả trùng khớp chứ không cho phép bạn nắm bắt các phần của chuỗi.
Cách sử dụng
Yêu cầu chuỗi phải là ngày được định dạng là YYYY-MM-DD trong khoảng thời gian từ năm 1900 đến năm 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])$/)"
Yêu cầu chuỗi phải là địa chỉ email:
".validate": "newData.isString() && newData.val().matches(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i)"
Yêu cầu chuỗi phải là một URL cơ bản:
".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\\-\\.\\?\\,\\'\\/\\\\+&=%\\$#_]*)?$/)"