2015-05-09 45 views
1

如何检查字符串在ruby中是否有效?一个有效的字符串将只包括字符或数字数字或两者。这是我所尝试过的:如何检查字符串在ruby中是否有效?一个有效的字符串将只包括字符或数字编号或者都

str = "abc." 
str[3].is_a? Numeric 
str[3].is_a? String 

“。”这里也是字符串(因为ruby没有char),但是在我的有效字符串定义中,“abc”。是无效的。 是否有任何方法在红宝石检查isLetter和isDigital像java一样?

+0

你能澄清你的验证测试?为什么'abc.'无效? – maerics

回答

2

你在正确的轨道上。 您只需要使用正则表达式来确定接受/拒绝哪些字符。

像这样的东西会接受所有小写和大写字母字符。

str = 'abc.' 
str[/([a-zA-Z]+)/] 

此操作,因为正则表达式([a-zA-Z]+)一组中的一个或多个字符+匹配()用小写a-z或大写A-Z字符。

您可以使用http://rubular.com/来尝试不同的正则表达式。

1

您是否在寻找正则表达式?

>> 'abc.' =~ /[a-zA-Z]/ 
=> 0 
>> 'abc.' =~ /[0-9]/ 
=> nil 
0

正则表达式:(注意:如果下划线是可接受的字符然后/\W/是可用的)。

def valid?(str) 
    (str =~ /[^a-zA-Z0-9]/).nil? 
end 

p valid? "123" # => true 
p valid? "123$" # => false 

没有正则表达式:

def valid?(str) 
    str.count("a-zA-Z0-9") == str.size 
end 

p valid? "123" # => true 
p valid? "123$" # => false 
相关问题