在javascript正则表达式中使用{1}+所有格量词时正则表达式错误

ewm0tg9j  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(378)

因为我同时学习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

那么,我对正则表达式的语法是错误的吗?
3ks5zfa0

3ks5zfa01#

javascript不支持所有格量词。出现您看到的错误是因为 + 只能用作一个或多个量词。
您引用的图表来自oracle,它解释了java支持的量词,而不是javascript支持的量词。
你不需要求助于任何特别的东西来做你想要的匹配。
如果要匹配“以 / ,没有其他斜杠,您可以使用:

/^[^/]+\/$/

字符串的开头,一个或多个非斜杠,后跟斜杠,后跟字符串的结尾。

相关问题