我想验证用户指定的版本字符串 - 以确保它包含三个以句点分隔的数字(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()
那么,如何正确编写所需的正则表达式?
感谢。
UPD
我的正则表达式也匹配1.2.3.4
,但不应该!
只有三个以句号分隔的数字。
答案 0 :(得分:5)
正则表达式中的点是特殊的,所以你应该逃避它们:
"^([0-9]+)\\.([0-9]+)\\.([0-9]+)$"
为什么要双反斜杠?见这里:https://stackoverflow.com/a/4490920/4323