Swa*_*and 10 ruby string numerical
我想验证字符串的"数字性"(它不是活动记录模型中的属性).我只需要它是一个有效的基数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
Run Code Online (Sandbox Code Playgroud)
哪一个更合理?或者,还有其他更好的实施吗?
Bkk*_*rad 10
请确保使用\A和\Z,而不是^和$,对于整个字符串匹配,而不是字符串中只有一行.如果要避免将字符串与结束换行符匹配,请在末尾使用"\ _".有关更多问题,请参阅锚点上的正则表达式教程.
例如,/^[0-9]+$/成功匹配以下内容:
foo
1234
bar
Run Code Online (Sandbox Code Playgroud)
但/\A[0-9]+\Z/不是.
第一个看起来很明智.
不过,我给这个方法命名了numeric?.我不是is_foo?方法的忠实粉丝.它们在方法名称(is_foo,isFoo)中没有问号的语言中有意义,但带有问号,is感觉多余.