2

例如,如果字符串包含“foo”,我可以制作一个正则表达式以使字符串通过吗?

我正在做的是使用 nodejs express 来匹配 URL。如何匹配任何包含“foo”的 URL?

例如,以下匹配根页面:

app.get('/', function(req, res){
  res.send('hello world');
});

但是我怎么能做同样的事情来匹配除了 之外的路线/login

app.get(/regex_here/, function(req, res){
  res.send('hello world');
});

regex_here匹配除 之外的所有页面的值应该是/login多少?

4

1 回答 1

3

从文档中,您似乎必须使用正则表达式。

所以你需要使用nhahtdh 的模式

/^(?!.*foo).*$/

究竟是什么/^(?!.*foo).*$/意思?

解释

带括号的表达式称为负前瞻,即模式只能在.*foo 紧跟在当前位置之后的情况下匹配,当前位置是字符串的开头,用 表示^

因此,该模式匹配所有内容.*- ,除非foo在开头之后的某处找到,也就是说与以下内容相同:

The pattern matches everything unless `foo` occurs in the string somewhere.
于 2012-11-25T11:30:02.970 回答