我正在开发一个 node.js 应用程序,并且正在做路由器匹配。
我需要将所有路由与所有变量匹配,除了以“public、static、files 或添加了“/”的相同单词开头的那些
我知道我可以在 regexp 之前使用 if 语句来检查这些单词是否带有 url,如果是,则跳过 regexp,但我不想添加这样的嵌套,并且知道如何使用 regexp 将成为反正在未来很方便。
我知道如何匹配除...某些字母以外的任何内容,即 ^[0-9] ,但我不能对单词使用相同的内容。我用谷歌搜索,发现前瞻可以解决这个问题,但是......我无法让它工作。
最后,id 喜欢使用类似这样的东西(在伪代码中),其中 .+ 仅在模式与任何给定单词不匹配时才会匹配。匹配(/^(?!public|static|files) .+ /gi)
编辑1:
url 的格式将是这样的......带或不带斜杠。
/controller/action/4/var:something/
我想制作一个匹配这个控制器的正则表达式 - 动作 - id 模式,但同时不会匹配这样的模式 /public/images/4 或 static/files/somefile
一般来说,id 喜欢知道如何匹配一个模式,但前提是它不以给定的单词开头。
例如像这样的东西......但它不起作用(匹配.+,但前提是它不包含前面提到的单词/^(?!公共|静态|文件)。+ /gi)