我想检查字符串是否仅由数字和字母组成。
def valid?
"abc#d" =~ /\p{Alnum}/
end
但是这会返回0.我希望它返回nil
,因为它包含#
,它既不是字母也不是数字。
我做错了什么?
答案 0 :(得分:4)
有问题的是你实际上正在检查:
但你想检查一下:
您可以这样检查:
def valid?
"abc#d" !~ /\P{Alnum}/
end
答案 1 :(得分:2)
听起来你想要检查以确保该字符串只包含 数字和字母:
"abc#d" =~ /\A\p{Alnum}+\z/
答案 2 :(得分:1)
试试这个:
"abc#d" =~ /^[A-Za-z0-9]+$/
答案 3 :(得分:1)
string !~ /[_\W]/
也有效。
"abc#d" !~ /[_\W]/ #=> false
"abc_d" !~ /[_\W]/ #=> false
"abc5d" !~ /[_\W]/ #=> true