在 JavaScript 正则表达式中使用 {1}+ 占有量词时的正则表达式 eError

IT技术 javascript regex express
2021-03-20 10:02:39

由于我同时学习 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

我的问题是,如果它只有一个/.
换句话说,它只会匹配默认的 urllocalhost:1337/

app.get(/\/{1}/, function (req, res) {
    res.render("index"); 
});

但是,我上面的当前正则表达式匹配其他路径名(即。localhost:1337/home/login)因为现在我知道它使用贪婪量词

在阅读了更多关于正则表达式的内容后,我将量词更改为所有格。
/\/{1}+/

但是后来快递给了这个错误:

Syntax Error: Invalid Regular Expression: /\/{1}+/: Nothing to Repeat

那么我的正则表达式语法错误吗?

1个回答

JavaScript 不支持所有格量​​词。您看到的错误是因为+只能用作贪婪的一个或多个量词。

您引用的图表来自 Oracle,并解释了 Java 支持的量词,而不是 JavaScript。

您不需要采取任何特殊措施来进行您想要的匹配。

如果要匹配“以 a 结尾的字符串/,其中没有其他斜杠,可以使用:

/^[^/]+\/$/

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

哦,我不知道。但是无论如何都要制作正则表达式,以便它回答我的问题
2021-04-29 10:02:39
其实应该是/^[^/]*\/[^/]*$/问题/\/$/在于它匹配任何以 a 结尾的字符串,因此除了末尾的字符串之外,字符串中/可能还有/更早的字符串。
2021-05-04 10:02:39
正则表达式其中字符串匹配与只有一个/就是/\/$/
2021-05-11 10:02:39