CMake中的正则表达式版本



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

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

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

UPD
我的正则表达式也匹配1.2.3.4,但不应该匹配
只能使用三个句点分隔的数字。

点在正则表达式中是特殊的,所以应该转义它们:

"^([0-9]+)\.([0-9]+)\.([0-9]+)$"

为什么使用双反斜杠?请参见此处:https://stackoverflow.com/a/4490920/4323