我正在尝试验证ruby中的字符串。任何包含空格、分数或任何特殊字符的字符串都将无法通过验证。有效的字符串应该只包含字符a-zA-Z 0 -9我的代码如下所示。
def validate(string)
regex ="/[^a-zA-Z0-9]$/
if(string =~ regex)
return "true"
else
return "false"
end
出现错误:TypeError:类型不匹配:给定的字符串。
谁能告诉我正确的做法是什么?
8条答案
按热度按时间htrmnn0y1#
如果要验证行,请执行以下操作:
每个都不需要退货。
nkkqxpd92#
您可以只检查字符串中是否存在特殊字符。
结果:
jucafojl3#
或
我们使用匹配字母和数字的正则表达式:
上面的:alpha:、:digit:和:alnum:是POSIX括号表达式,它们具有匹配其类别中的Unicode字符的优势。希望这对您有所帮助。
查看下面的链接以获得更多选项:Ruby: How to find out if a character is a letter or a digit?
velaa5lx4#
无正则表达式:
carvr3hs5#
上面的答案很好,但仅供参考,你的错误消息是因为你用双引号
"
开始你的正则表达式。你会注意到你的方法中有奇数(5)个双引号。此外,您可能希望以值的形式返回true和false,而不是以带引号的字符串的形式返回。
ivqmmu1c6#
类似于@steenslag已经提到的非常高效的regex-ish方法,并且几乎一样快:
或
但是,使用
tr
的一个好处是,您还可以选择使用相同的基本公式来分析结果:mnemlml87#
类似于@rohit89:
nbewdwxp8#
在Ruby 2.4及更高版本中使用
.match?
。Ruby 2.4引入了一个方便的返回布尔值的
.match?
方法。在你的情况下,我会这样做: