由于某些原因,我无法在vue路由器路径中工作。
/category/:category(\d+)/:post([-+]?([0-9]*\.[0-9]+|[0-9]+))我有数字要和:category(\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如果有人知道如何解决这个问题,请告诉我!
发布于 2020-02-06 23:13:32
更新:
Vue路由器使用的path-to-regexp版本为1.7.0.差不多吧。它的确切方式是复杂的,但我相信1.7.0提供了最好的匹配。
考虑到这一点,我想到了这个:
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/
这似乎适用于我:
/category/:category(\d+)/:post([-+]?(\d{0,}.\d+|\d+))更改:
slashes.
*更改为{0,},否则将*转换为.*,而12xxx.34则会将[0-9]转换为\d。这两种方法都可以,如果您必须将其写入字符串,则使用[0-9]可以更容易地避免斜杠转义。无论你选择哪一个,都要保持一致。--https://stackoverflow.com/questions/60104296
复制相似问题