我正在开发一个node.js应用程序,我正在进行路由器匹配。
我需要将所有路径与除开头之外的所有变量匹配 “公共,静态,文件或添加了相同的单词”/“
我知道我可以在regexp之前使用if语句来检查这些单词是否正在使用url,如果是,请跳过regexp,但我不想添加这样的嵌套,并且知道如何使用regexp无论如何都将在未来变得派上用场。
我知道如何匹配任何东西,除了......一些字母,即^ [0-9],但我不能使用相同的单词。我用Google搜索,发现前瞻可以解决这个问题,但是......我无法让它发挥作用。
最后,id喜欢使用这样的东西(伪代码) 只有当模式与任何给定单词不匹配时,。+才会匹配。 匹配(/ ^(?! public | static | files)。+ / gi)
编辑1:
网址的格式是这样的......有或没有斜线。
/控制器/动作/ 4 / var:所有的东西/
我想创建一个与此控制器匹配的正则表达式 - action - id 模式,但同时不会匹配这样的模式 /公共/图像/ 4 要么 static / files / somefile
一般来说,id喜欢知道如何匹配模式,但前提是它不是以给定的单词开头。
例如这样......但它不起作用 (匹配。+,但前提是它不包含前面提到的单词 /^(??public|static|files).+ / gi)
答案 0 :(得分:0)
实际上,我没有遇到负面预测的麻烦。这样的东西似乎工作得很好,虽然它不是超级可扩展的。
/^\/(?!public|static|files)([^\/]+)?\/?([^\/]+)?\/?([^\/]+)?\/?(.*)$/i
第一次捕获将是控制器,第二次是动作,第三次是ID,第四次是剩下的任何内容。