【问题标题】:Validating slugs in Firebase security rules验证 Firebase 安全规则中的 slug
【发布时间】:2016-01-07 12:58:51
【问题描述】:

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

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

类似:

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

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

【问题讨论】:

  • 看来replace()这里根本不允许使用正则表达式。
  • 是的,我也注意到 :( 目前,我只是放弃了 slug 验证,但真的很想以某种方式解决这个问题......

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


【解决方案1】:

您可以使用允许的字符串运算符做的最好的事情是确保您的字符串 看起来 像一个 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

【讨论】:

    猜你喜欢
    • 2019-01-20
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 2017-04-28
    • 2019-06-15
    相关资源
    最近更新 更多