【发布时间】:2019-05-03 06:14:44
【问题描述】:
我正在写 Nuxt Web 应用程序,我遇到了一些奇怪的事情。
export default {
name: 'post',
validate({ params }) {
return /^[a-zA-Z0-9_]+$/.test(params.postname)
}
}
这接受“空字符串”,即使它不应该。如果它不接受空字符串,应该会显示 404 错误页面,但它不会。
export default {
name: 'post',
validate({ params }) {
return /^[a-zA-Z0-9_]{1,}$/.test(params.postname)
}
}
这也是如此。据我所知,+ 和{1,} 是相同的。为什么+ 和{1,} 接受空字符串?
【问题讨论】:
-
Why + accepts empty string?不应该。您确定您正在测试正确的字符串吗?也可以试试console.logging。另请注意,字母 + 数字 + 下划线简化为\w- 根本不需要字符集 -
/^[a-zA-Z0-9_]+$/.test("") = false
-
这是完整代码test: "{{ this.$route.params.postname }}"浏览器向我显示
test: ""当我尝试访问https://localhost:3000/posts/ -
就像我说的,在
validate中尝试console.logging,+不应该接受空字符串,也许函数没有运行,或者它的返回值没有被使用,但是对空字符串的测试将评估为false,除非引擎中存在错误,这不太可能 -
它被字符串化为'undefined',匹配。
标签: javascript regex nuxt.js