我在这里找到了一些关于从字符串中提取版本号的线程,但没有一个完全符合我的要求。
如何使用 javascript/regex 从字符串中过滤出以下版本号?
Title_v1_1.00.mov
过滤器 1
v.1.0.1-Title.mp3
过滤器1.0.1
Title V.3.4A.
过滤 3.4A
V3.0.4b mix v2
过滤器3.0.4b
因此,查找第一次出现的“v”或“v”。后跟一个数字,后跟数字、字母或点,直到字符串末尾或出现空白或出现点 (.) 且其后没有数字。
最佳答案
根据评论,要匹配字符串中的第一个版本号,您可以使用捕获组:
^.*?v\.?(\d+(?:\.\d+[a-z]?)*)
将匹配:
^
断言字符串的开头.*?
匹配0+任意字符非贪婪v\.?
匹配 v 后跟一个可选的点(
捕获组\d+
匹配 1 个以上数字(?:
非捕获组\.\d+[a-z]?
匹配一个点、1 个以上数字,后跟一个可选字符 a-z
)*
关闭非捕获组并重复 0 次以上
)
关闭捕获组
如果像V.3.4A中的A
这样的字符只能出现在最后一部分,则可以使用:
^.*?v\.?(\d+(?:\.\d+)*[a-z]?)
const strings = [
"Title_v1_1.00.mov filters 1",
"v.1.0.1-Title.mp3 filters 1.0.1",
"Title V.3.4A. filters 3.4A",
"V3.0.4b mix v2 filters 3.0.4b"
];
let pattern = /^.*?v\.?(\d+(?:\.\d+[a-z]?)*)/i;
strings.forEach((s) => {
console.log(s.match(pattern)[1]);
});
关于javascript - 从javascript中的字符串过滤版本号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52911949/