验证Firebase安全规则中的slugs

时间:2016-01-07 12:58:51

标签: regex firebase firebase-security firebase-realtime-database

我想验证插入的slu is是否应该是什么,并在Bolt中具有以下功能:

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

用过:

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

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

1 个答案:

答案 0 :(得分:3)

关于使用允许的字符串运算符可以做的最好的事情是确保字符串看起来像一个slug

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