首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向Vue路由器路径添加浮点验证?

如何向Vue路由器路径添加浮点验证?
EN

Stack Overflow用户
提问于 2020-02-06 22:10:12
回答 1查看 324关注 0票数 0

由于某些原因,我无法在vue路由器路径中工作。

代码语言:javascript
复制
/category/:category(\d+)/:post([-+]?([0-9]*\.[0-9]+|[0-9]+))

我有数字要和:category(\d+)一起用

但出于某种原因,像这样的正则表达式不能工作,:post(-+?(0-9*.0-9+|0-9+))

每当我用javascript测试它时,它就会工作。但是当我把它放在上面的路上时,它就不起作用了。

代码语言: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

我想要匹配的数字:

代码语言:javascript
复制
10
65.5
.55

如果有人知道如何解决这个问题,请告诉我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-06 23:13:32

更新:

Vue路由器使用的path-to-regexp版本为1.7.0.差不多吧。它的确切方式是复杂的,但我相信1.7.0提供了最好的匹配。

考虑到这一点,我想到了这个:

代码语言:javascript
复制
path: '/category/:category([0-9]+)/:post([-+]?[0-9]*\\.?[0-9]+)',

这与我最初的答案有点不同,但如果您将版本更改为1.7.0,也可以使用我提到的测试站点进行测试。

我在Vue路由器上测试过这个,它似乎对我有用。我还没用Nuxt测试过呢。

这里的“诀窍”是,它不是整数的特例,而是通过使点可选来自动匹配。这就消除了路径中的一些特殊符号,为它与path-to-regexp的疯狂冲突留下了更少的空间。

原始答案:

我做了一些使用特快路线测试器的实验,我相信它使用的path-to-regexp库与Vue-路由器/Nuxt相同:

https://forbeslindesay.github.io/express-route-tester/

这似乎适用于我:

代码语言:javascript
复制
/category/:category(\d+)/:post([-+]?(\d{0,}.\d+|\d+))

更改:

slashes.

  • Removed

  • 移除点前的反斜杠
  1. *更改为{0,},否则将*转换为.*,而12xxx.34则会将[0-9]转换为\d。这两种方法都可以,如果您必须将其写入字符串,则使用[0-9]可以更容易地避免斜杠转义。无论你选择哪一个,都要保持一致。--
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60104296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档