我想要的很简单。我将使用JavaScript或PHP从源获取文件。当我获得文件的名称时,它将具有类似 source-file-1.0.0-stable.zip 的格式。一段时间后,该文件可能会变成 source-file-1.2.0-stable.zip 。我想从这个文件名中提取版本。可以用正则表达式完成吗?是否有任何PHP函数只能使用字符串和正则表达式?我不想使用其他功能,例如explode(), strpos()
或其他任何功能
答案 0 :(得分:5)
您可以使用以下正则表达式来匹配版本号。
\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'