javascript - 从javascript中的字符串过滤版本号?

标签 javascript regex

我在这里找到了一些关于从字符串中提取版本号的线程,但没有一个完全符合我的要求。

如何使用 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]?)*)

Regex demo

将匹配:

  • ^ 断言字符串的开头
  • .*? 匹配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/

相关文章:

c# - 使用正则表达式替换坏词

c# - 正则表达式:表现懒惰的贪婪量词

mysql - 存储过程和单元测试

regex - 从文件加载正则表达式并在 Perl 中匹配组

JavaScript/Angular RegEx 只允许粘贴字母数字

javascript - 基于设备的 HTML 响应式链接

javascript - 出现错误消息后重置变量

javascript - 如何知道jQuery回调函数中有哪些参数,如何理解并添加参数?

javascript - 在不执行页面重新加载的情况下重新初始化 Sencha Touch 应用程序

javascript - 制作电子邮件表格 发送电子邮件