Javascript 如何向Vue路由器路径添加浮点验证?
由于某些原因,我无法在vue路由器路径中使用浮点Javascript 如何向Vue路由器路径添加浮点验证?,javascript,vue.js,vue-router,nuxt.js,path-to-regexp,Javascript,Vue.js,Vue Router,Nuxt.js,Path To Regexp,由于某些原因,我无法在vue路由器路径中使用浮点 /category/:category(\d+)/:post([-+]?([0-9]*\.[0-9]+|[0-9]+)) 我有数字要处理:类别(\d+) 但是由于某种原因,像这样的正则表达式不起作用:post([-+]?([0-9]*.[0-9]+|[0-9]+) 每当我用javascript测试它时,它都能工作。但当我把它放在上面的路径上时,它就不起作用了 /[-+]?([0-9]*\.[0-9]+|[0-9]+)/.test(6.5) //
/category/:category(\d+)/:post([-+]?([0-9]*\.[0-9]+|[0-9]+))
我有数字要处理:类别(\d+)但是由于某种原因,像这样的正则表达式不起作用:post([-+]?([0-9]*.[0-9]+|[0-9]+) 每当我用javascript测试它时,它都能工作。但当我把它放在上面的路径上时,它就不起作用了
/[-+]?([0-9]*\.[0-9]+|[0-9]+)/.test(6.5) // MATCHES /category/196/6.5
/[-+]?([0-9]*\.[0-9]+|[0-9]+)/.test(6) // MATCHES /category/196/6
我想匹配的数字:
10
65.5
.55
如果有人知道如何解决这个问题,请告诉我 更新: Vue路由器使用的regexp路径的版本是1.7.0。。。伊什。确切的方式是复杂的,但我相信1.7.0提供了最好的匹配 考虑到这一点,我想到了这个:
path:'/category/:category([0-9]+)/:post([-+]?[0-9]*\\.?[0-9]+),
这与我最初的答案有点不同,但如果您将版本更改为1.7.0,也可以使用我提到的测试站点进行测试
我已经用Vue路由器测试过了,它似乎对我有效。我还没有用Nuxt测试过它
这里的“诀窍”是,它并不是整数的特例,它们通过使点可选来自动匹配。这就去掉了路径中的一些特殊符号,从而减少了它与regexp的路径的疯狂性相冲突的空间
原始答案:
我使用Express Route Tester做了一些实验,我相信它使用了与Vue Router/Nuxt相同的regexp
库路径:
这似乎对我有用:
/category/:category(\d+)/:post([-+]?(\d{0,}.\d+|\d+))
变化:
*
更改为{0,}
,否则将转换为*
,类似12xxx.34
的内容将匹配[0-9]
更改为\d
。这两种方法都可以,如果必须将其作为字符串编写,则使用[0-9]
避开斜杠转义可能会更容易。无论你选择哪一个,都要始终如一你能澄清一下括号内的路径中是否有正斜杠吗?第一个例子有它们,但几行之后它们被省略了。@skille啊,我的错!我试验得太多了,不小心把它们留在了里面。遗憾的是,这两个示例都不起作用。恐怕这在Vue路由器中不起作用。我在你添加的网站上仔细检查了你的答案,它确实在那里起作用。@user3410823我已经更新了我的答案。我没有方便测试的Nuxt应用程序,但我的新建议似乎适用于Vue路由器。