验证 Firebase 安全规则中的 slug

Validating slugs in Firebase security rules

我想验证插入的 slug 是否是它们应该的样子,并在 Bolt 中具有以下功能:

slugify(s) = s.toLowerCase().replace(/[^\w ]+/g,'').replace(/ +/g,'-')

像这样使用:

validate() = $slug == slugify($this.title)

但是,似乎不支持 g 正则表达式修饰符。还有其他方法/最佳实践可以实现我的目标吗?

关于允许的字符串运算符,您可以做的最好的事情是确保您的字符串看起来像一个鼻涕虫。

type Slug extends String {
  validate() = this.test(/^([a-z0-9]+-)+[a-z0-9]+$/);
}

以下是针对此模式的一些测试:

  .write('this-is-a-slug')
  .succeeds("Typical slug text.")

  .write('numbers-2016-ok')
  .succeeds("Numbers are ok.")

  .write('double--hyphen')
  .fails("Double hyphen not ok.")

  .write('-leading-hyphen')
  .fails("Leading hyphen not ok.")

  .write('trailing-hyphen-')
  .fails("Trailing hyphen not ok.")

  .write('nohyphen')
  .fails("Must have at least one hyphen.")

  .write('no-Upper')
  .fails("No upper case.")

  .write('no-special&-char')
  .fails("No special characters.")

  .write('no spaces')
  .fails("No spaces allowed.")

你可以找到更多RegExp examples here