【发布时间】:2018-11-27 22:31:52
【问题描述】:
我试图了解语义版本在 nodejs(和 npm)中是如何工作的。托管nodejs使用的正则表达式的git repo在这里https://github.com/sindresorhus/semver-regex,但我复制了下面仅有的两行代码。
'use strict';
module.exports = () => /\bv?(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\da-z-]+(?:\.[\da-z-]+)*)?(?:\+[\da-z-]+(?:\.[\da-z-]+)*)?\b/ig;
据我所知,这对每个组都使用了非捕获组 (?:...)。这是如何运作的?尽管没有捕获任何内容,但匹配项似乎返回值。我错过了一个捕获组吗?这在 nodejs 中是非标准的吗?
【问题讨论】:
-
完全错了。它匹配不符合semver 规范的字符串,如果不匹配合法的字符串。
标签: javascript node.js regex semantic-versioning