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

Dav*_*ave 0 ruby regex string numbers

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

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

2.4.0 :007 > line =~ /^^[0-9]+$/
 => nil 
Run Code Online (Sandbox Code Playgroud)

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

Ry-*_*Ry- 5

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

[^abc]  # not a, b, or c
Run Code Online (Sandbox Code Playgroud)

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

line =~ /^[^0-9]+$/
Run Code Online (Sandbox Code Playgroud)

请注意,您可能需要\A\z不是^$,因为它们匹配整个字符串的开头和结尾而不是行,这\D是简短的[^0-9].

line =~ /\A\D+\z/
Run Code Online (Sandbox Code Playgroud)

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

line !~ /\d/
Run Code Online (Sandbox Code Playgroud)