在JavaScript正则表达式中使用{1} +占有量词时出现正则表达式错误

时间:2014-08-12 03:42:27

标签: javascript regex express

因为我正在学习Javascript和Express.js,所以我在制作get请求时正在尝试使用正则表达式

对于我的家人,我用自己的正则表达式chart(也在下面再现)

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

我的问题是,如果只有一个/,我如何才能获得匹配网址的正则表达式。
换句话说,它只会匹配默认网址localhost: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 个答案:

答案 0 :(得分:1)

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

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

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

如果你想匹配"一个以/结尾的字符串,其中没有其他斜杠,你可以使用:

/[^/]+\/$/

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