验证 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
我想验证插入的 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