javascript - 从javascript中的字符串过滤版本号?
问题描述
我在这里找到了一些关于从字符串中提取版本号的线程,但没有一个完全符合我的要求。
如何使用 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+ 位数字后跟可选字符 az
)*
关闭非捕获组并重复 0+ 次
)
关闭捕获组
如果A
V.3.4A 中的字符只能在最后一部分,您可以使用:
^.*?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]);
});
推荐阅读
- reverse-geocoding - HERE 反向地理编码 - 为什么我们得到“空”而不是实际数字?
- ms-access - 多记录表单 DB ACCESS 上的独立控件/字段
- python - 我该如何解决:app = Flask(_name_) NameError: name '_name_' is not defined
- javascript - 用于动态元素的 Javascript HTML DOM - 未捕获的类型错误:无法设置未定义的属性
- python - Tensorflow 未检测到 CUDA 设备
- visual-studio-code - “无法启动 conpty”,但命令提示符设置为默认配置文件
- powerbi - 发布新报告后个人书签被删除,知道为什么吗?
- encryption - 使用 x5c 和 x5t 参数创建 JWK 密钥
- c# - Visual Studio 如何制作他们的自定义文件对话框
- swift - 当特定值相等时在数组中添加监听器然后更新 SwiftUI