【问题标题】:Regex eError when using {1}+ possessive quantifier in JavaScript regex在 JavaScript 正则表达式中使用 {1}+ 所有格量词时出现正则表达式错误
【发布时间】:2014-10-05 00:28:57
【问题描述】:

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

我的问题是,如果正则表达式只有一个 /,我如何才能让正则表达式匹配一个 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

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

【问题讨论】:

    标签: javascript regex express


    【解决方案1】:

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

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

    您无需求助于任何特殊的东西来进行您想要的匹配。

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

    /^[^/]+\/$/
    

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

    【讨论】:

    • 哦,我不知道。但是无论如何都要制作正则表达式,所以它回答了我的问题
    • 一个匹配字符串的正则表达式只有一个//\/$/
    • 其实应该是/^[^/]*\/[^/]*$//\/$/ 的问题在于它匹配任何以 / 结尾的字符串,因此除了末尾的那个之外,字符串中的前面可能还有一个 /
    猜你喜欢
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    相关资源
    最近更新 更多