nodejs Express正则表达式路径:在测试中工作,而不在代码中工作。我做错了什么?

时间:2018-07-19 14:36:14

标签: node.js regex express

我想要在nodejs中使用超级简单的过滤器来表达路由路径。参数必须是word1或word2。 经过以下测试:https://forbeslindesay.github.io/express-route-tester/

带有表达式:test /:gender(\ b(word1 | word2)\ b)

路径:test / word2

一切正常。 “路径与路线匹配”

但是在代码中:

router.get('^/test/:gender(\b(word1|word2)\b)', function (req, res, next){//something})...;

我得到404(从express重定向,如果参数不正确,应该重定向!)。

注意1:删除正则表达式字符串即可。

注2:我DID设法使另一个过滤器起作用。它必须像:“ word1-word2 [-moreWords]。我用

实现了它
router.get('^/test/:user_name(*[a-zA-Z0-9][-]*[a-zA-Z0-9])', function (req, res, next) {//something});

并且可以正常工作。

注3:我也对其进行了测试(我首先将它们写在:) https://regex101.com/中,它们当然可以工作。

那我该怎么办?

1 个答案:

答案 0 :(得分:2)

您可以使用

'^/test/:gender(word1|word2)\\b'

请注意,genderword之间没有单词边界,只能保留 trailing 单词边界。

要定义单词边界,您需要在字面量后加上反斜杠b,因此在字符串文字中,应编写两个连续的反斜杠符号。