使用正则表达式从文件名中查找文件版本

Find version of file from file name with regex

我要的很简单。我将使用 JavaScript 或 PHP 从源获取文件。当我得到文件名时,它的格式类似于 source-file-1.0.0-stable.zip。一段时间后,该文件可能会变成 source-file-1.2.0-stable.zip。我想从此文件名中提取版本。可以用正则表达式来完成吗?是否有任何 PHP 函数只能对字符串和 regex 执行此操作?我不想使用其他功能,例如 explode(), strpos() 或其他任何功能

您可以使用以下正则表达式来匹配版本号。

\b\d+(?:\.\d+)*\b
  • \b 匹配单词字符和非单词字符的单词边界。

  • \d+ 匹配一个或多个数字。

  • (?:...) 调用非捕获组。 (?:\.\d+) 匹配一个点和后面的一个或多个数字。 (?:\.\d+)* ,匹配一个点和后面的一个或多个数字零次或多次。 * 重复前一个标记零次或多次。如果版本号必须包含一个点,则将此模式 (?:\.\d+)* 中的 * 更改为 ++ 重复前一个标记一次或多次。

在js中,就像

> "source-file-1.0.0-stable.zip".match(/\b\d+(?:\.\d+)*\b/)[0]
'1.0.0'