javascript - ExpressJS : What's the difference between ? 、 +、 * 在字符串模式和正则表达式中?

标签 javascript regex node.js express

嗨,我是 Express 新手,虽然我在互联网上搜索了字符串模式的完整解释,但我还没有找到任何内容。 path-to-regexp 的文档似乎也没有帮助。

具体来说,我试图解释文档中的这个(IMO 相当神秘的)评论:

The characters ?, +, *, and () are subsets of their Regular Expression counterparts.

参见http://expressjs.com/guide/routing.html

这些字符在正则表达式和字符串模式之间的行为有何不同?有人知道 Express 字符串中被视为特殊的字符的完整列表,并解释它们应该做什么吗?

干杯

最佳答案

这意味着您不能使用“常规”正则表达式,但在确定 ExpressJS 应用程序的路由时可以使用正则表达式的“子集”。

How differently do these characters behave between regexes and string patterns? Would anyone know of a complete list of characters deemed special in Express strings, with explanations about what they are supposed to do?

被视为特殊的字符是提到的这些字符,?、+、* 和 ()P ,这意味着,即使 ExpressJS 不完全支持正则表达式,这些字符 其行为与正则表达式的行为完全相同

Express 路由文档已经为您提供了示例:

// will match acd and abcd
app.get('/ab?cd', function(req, res) {
  res.send('ab?cd');
});

// will match abcd, abbcd, abbbcd, and so on
app.get('/ab+cd', function(req, res) {
  res.send('ab+cd');
});

// will match abcd, abxcd, abRABDOMcd, ab123cd, and so on
app.get('/ab*cd', function(req, res) {
  res.send('ab*cd');
});

// will match /abe and /abcde
app.get('/ab(cd)?e', function(req, res) {
 res.send('ab(cd)?e');
});

如果这些示例还不够,并且您想深入了解,我建议您学习正则表达式:REGEX, best way to learn it

我还建议使用Regex101学习的时候。您可以测试上面示例中的正则表达式,它会在右上角向您解释

示例:

Regex

再次请记住,在整个 Regex 特殊字符中,只有 ?、+、* 和 ()P 适用于 Express 路由。

关于javascript - ExpressJS : What's the difference between ? 、 +、 * 在字符串模式和正则表达式中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30948293/

相关文章:

javascript - 针对 Angular 1 进行编码,以便最轻松地升级到 Angular 2?

javascript - Angular JS 中的堆叠条形图(高图表)

javascript - Node.js 如何将脚本加载到内存中?

node.js - 如何在 Mongoose 中使用 elemMatch 进行查询?

javascript - 区分 JavaScript 数组中未找到的元素和索引为 -1 的元素

javascript - 从 C# 代码获取 html 按钮/下拉文本

javascript正则表达式选择带引号的字符串但不转义引号

正则表达式空白字边界

python - 从 BeautifulSoup 结果中获取表单 "action"

javascript - 管理员登录后如何访问网站的其他页面