Ruby 实现是_numeric?对于字符串,需要更好的选择

标签 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

以下哪一个是更合理的选择?或者,还有其他更好的实现方式吗?

最佳答案

请确保使用 \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/

相关文章:

c - C语言中如何查询数值?

algorithm - 组合问题和数值问题有什么区别

ruby-on-rails - Ruby on Rails : models, 迁移和概览

ruby-on-rails - 搜索查询中指定时区

mysql - 获取当前事件的数据库连接

arrays - PowerBuilder - 字符串到数组的转换

ruby - 有没有办法阻止基于 ncurses 的程序运行?

python - 在 python 中反转字符串的最快方法

C - 如何使用 scanf 读取只有空格的字符串

c - 释放指向数组的指针时程序崩溃,为什么?