我需要验证版本号,例如6.0.2
/6.0.2.011
当用户输入它们时。我检查了to_i
,但它不符合我的目的。有什么方法可以验证版本号?谁能告诉我?
问问题
460 次
3 回答
2
这是根据您的规范匹配“有效”版本号的正则表达式(仅数字以 分隔.
):
/\A\d+(?:\.\d+)*\z/
这个表达式可以分解如下:
\A anchor the expression to the start of the string
\d+ match one or more digit character ([0-9])
(?: begin a non-capturing group
\. match a literal dot (.) character
\d+ match one or more digit character
)* end the group, and allow it to repeat 0 or more times
\z anchor the expression to the end of the string
此表达式仅.
在后跟至少一个数字时才允许,但将允许版本号的任意数量的“部分”(即,,,,并将6
全部匹配)。6.0
6.0.2
6.0.2.011
于 2013-10-07T12:53:36.940 回答
0
看看这是否有帮助。
if a.length == a.scan(/\d|\./).length
# only dots and numbers are present
# do something
else
# do something else
end
例如
a = '6.0.2.011'
a.length == a.scan(/\d|\./).length #=> true
b = '6b.0.2+2.011'
b.length == b.scan(/\d|\./).length #=> false
根据扫描结果的长度检查输入长度,以确保仅存在点和数字。话虽如此,很难保证未来的版本号都将遵循相同的约定。你将如何确保有人不会引入类似的东西6a.0.2.011
于 2013-10-07T12:47:11.620 回答
0
如果您想使用版本号,我建议您使用versionomy
( Github ) gem。
于 2013-10-07T12:37:23.750 回答