-1

我需要验证版本号,例如6.0.2/6.0.2.011当用户输入它们时。我检查了to_i,但它不符合我的目的。有什么方法可以验证版本号?谁能告诉我?

4

3 回答 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.06.0.26.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 回答