我想看看一个字符串是否只有数字和字母组成。

  def valid?
    "abc#d" =~ /\p{Alnum}/
  end

但这返回0我希望它返回nil,因为它包含#,既不是字母也不是数字。
我做错什么了?

最佳答案

问题是你实际上在检查:
不管一个字符串是否包含任何数字或字母,
但你想查一下:
字符串是否不包含数字或字母以外的任何内容。
你可以这样检查:

def valid?
  "abc#d" !~ /\P{Alnum}/
end

10-06 00:50