因为我同时学习javascript和express.js,所以在发出get请求时,我尝试使用正则表达式
为了熟悉正则表达式,我使用了这个图表(也在下面复制)
Greedy Reluctant Possessive Meaning
X? X?? X?+ X, once or not at all
X* X*? X*+ X, zero or more times
X+ X+? X++ X, one or more times
X{n} X{n}? X{n}+ X, exactly n times
X{n,} X{n,}? X{n,}+ X, at least n times
X{n,m} X{n,m}? X{n,m}+ X, at least n but not more than m times
我的问题是,如果一个正则表达式只有一个url,那么如何让它匹配url /
.
换句话说,它将只匹配默认url localhost:1337/
```
app.get(//{1}/, function (req, res) {
res.render("index");
});
但是,我上面的当前正则表达式与其他路径名(即。 `localhost:1337/home/login` )因为现在我知道它使用贪婪的量词
在阅读了更多关于正则表达式的内容后,我将量词改为所有格。 `/\/{1}+/` 但是express给出了这个错误:
Syntax Error: Invalid Regular Expression: //{1}+/: Nothing to Repeat
那么,我对正则表达式的语法是错误的吗?
1条答案
按热度按时间3ks5zfa01#
javascript不支持所有格量词。出现您看到的错误是因为
+
只能用作一个或多个量词。您引用的图表来自oracle,它解释了java支持的量词,而不是javascript支持的量词。
你不需要求助于任何特别的东西来做你想要的匹配。
如果要匹配“以
/
,没有其他斜杠,您可以使用:字符串的开头,一个或多个非斜杠,后跟斜杠,后跟字符串的结尾。