Что такое выражение reg для ограничений Firestore для идентификаторов документов? - PullRequest
0 голосов
/ 17 октября 2018

Firestore имеет ограничения на идентификаторы (https://firebase.google.com/docs/firestore/quotas)

Что такое регулярное выражение Javascript для проверки ограничений на следующее:

  • Должны быть действительными символами UTF-8
  • Не должен превышать 1500 байт.
  • Не может содержать косую черту (/)
  • Не может состоять только из одного периода (.) или двойных периодов (* 1015)*)
  • Не удается сопоставить регулярное выражение __.*__

1 Ответ

0 голосов
/ 17 октября 2018

Давайте посмотрим на следующие моменты:

Должны быть действительными символами UTF-8

Я бы предположил, что это больше вопрос выбора языка программирования, который вы выбрали,по крайней мере, пока вы не сообщите нам, что у вас есть необработанные октеты и хотите, чтобы регулярное выражение проверяло, что последовательность необработанных октетов является допустимой последовательностью UTF-8.

Не должно превышать 1500 байт

Это будет означать что-то вроде .{1,1500}

Не может содержать косую черту

Это будет означать что-то вроде [^/]{1,1500} вместо .{1,1500}.

Не может состоять только из одного периода или двойных периодов.

Это означает что-то вроде (?!\.\.?).

Невозможно сопоставитьрегулярное выражение __.*__

Это означает что-то вроде (?!__.*__).Возможно, это должно означать, что никакой ID не может начинаться с __ и заканчиваться __, но, возможно, это означает, что ни один ID не может содержать подстроку, которая начинается/ заканчивается __.Мой подход безопасен и отвергает все, что содержит подстроку.

Комбинируя вышесказанное, мы получаем что-то вроде:

^(?!\.\.?$)(?!.*__.*__)([^/]{1,1500})$

Сокращение максимальной длины до чего-то разумного, например 10, некоторые тестовые случаи:

Принять
foo
foo.
foo..
Отклонить
bar/
12345678901
foo__bar__
.
..

Скрипка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...