我想验证字符串的“数值”(它不是事件记录模型中的属性)。我只需要它是一个有效的以 10 为底的正整数字符串。我这样做:
class String
def numeric?
# Check if every character is a digit
!!self.match(/\A[0-9]+\Z/)
end
end
class String
def numeric?
# Check is there is *any* non-numeric character
!self.match(/[^0-9]/)
end
end
以下哪一个是更合理的选择?或者,还有其他更好的实现方式吗?
最佳答案
请确保使用 \A
和 \Z
而不是 ^
和 $
,以匹配整个字符串,而不仅仅是字符串中的一行。如果要避免匹配带有结尾换行符的字符串,请在末尾使用“\z”。更多问题见The Regex Tutorial on anchors .
例如/^[0-9]+$/
成功匹配如下:
foo
1234
bar
但是 /\A[0-9]+\Z/
没有。
关于Ruby 实现是_numeric?对于字符串,需要更好的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1286870/