使用正则表达式从文件名中查找文件版本
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'
我要的很简单。我将使用 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'