CMake中的版本正则表达式

era*_*lan 1 regex cmake

我想验证用户指定的版本字符串 - 以确保它包含三个以句点分隔的数字(e.g. 1.20.300).
但我不知道如何编写这样的正则表达式,下面的代码只是一个尝试:

if( PROJECT_VERSION MATCHES "([0-9]+).([0-9]+).([0-9+])" )
    message( "NOTE: Valid version string" )
else()
    message( FATAL_ERROR "Invalid version string" )
endif()
Run Code Online (Sandbox Code Playgroud)

那么,如何正确编写所需的正则表达式?
谢谢.

UPD
我的正则表达式也匹配1.2.3.4,但不应该!
只有三个以周期分隔的数字是可能的.

Joh*_*nck 7

圆点在正则表达式中是特殊的,所以你应该逃避它们:

"^([0-9]+)\\.([0-9]+)\\.([0-9]+)$"
Run Code Online (Sandbox Code Playgroud)

为什么双反斜杠?见这里:https://stackoverflow.com/a/4490920/4323