因为我正在学习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
我的正则表达式的语法错了吗?
答案 0 :(得分:1)
JavaScript不支持占有量词。您看到的错误是因为+
只能用作贪婪的一个或多个量词。
您引用的图表来自Oracle,并且正在解释Java支持的量词,而不是JavaScript。
您不需要采取任何特殊措施来进行所需的匹配。
如果你想匹配"一个以/
结尾的字符串,其中没有其他斜杠,你可以使用:
/[^/]+\/$/
一个或多个非斜杠,后跟斜杠,后跟字符串的结尾。