为什么我的正则表达式没有告诉我字符串是否包含数字?

时间:2017-01-14 01:20:05

标签: ruby regex string numbers

我正在使用Ruby 2.4。如何检查字符串是否包含任何数字?我正在尝试这个

2.4.0 :002 > line = "abcdef"
 => "abcdef"

2.4.0 :007 > line =~ /^^[0-9]+$/
 => nil 

我认为“^”是“非”字符,但我不确定它是如何工作的,因为我知道它也是短语起始字符。无论如何,感谢帮助, -

2 个答案:

答案 0 :(得分:5)

^在方括号列表的开头处否定一组字符:

[^abc]  # not a, b, or c

所以你只需要在括号内移动它:

line =~ /^[^0-9]+$/

请注意,您可能需要\A\z而不是^$,因为它们匹配整个字符串的开头和结尾而不是行,并且{ {1}}是\D的缩写。

[^0-9]

您也可以对数字进行否定检查。

line =~ /\A\D+\z/

答案 1 :(得分:2)

您可以像这样使用match?

'abcdef'.match?(/\d/)
 #=> false