Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何向Vue路由器路径添加浮点验证?_Javascript_Vue.js_Vue Router_Nuxt.js_Path To Regexp - Fatal编程技术网

Javascript 如何向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) //

由于某些原因,我无法在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) // 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路由器。