我正在尝试验证ruby中的字符串。 任何包含空格,分数或任何特殊字符的字符串都应该无法通过验证。 有效字符串应仅包含字符a-zA-Z0-9 我的代码看起来像。
def validate(string)
regex ="/[^a-zA-Z0-9]$/
if(string =~ regex)
return "true"
else
return "false"
end
我收到错误: TypeError:type mismatch:给定的字符串。
任何人都可以告诉我这样做的正确方法是什么?
答案 0 :(得分:8)
如果您要验证一行:
def validate(string)
!string.match(/\A[a-zA-Z0-9]*\z/).nil?
end
不需要每个人都有回报。
答案 1 :(得分:2)
您可以检查字符串中是否存在特殊字符。
def validate str
chars = ('a'..'z').to_a + ('A'..'Z').to_a + (0..9).to_a
str.chars.detect {|ch| !chars.include?(ch)}.nil?
end
结果:
irb(main):005:0> validate "hello"
=> true
irb(main):006:0> validate "_90 "
=> false
答案 2 :(得分:1)
def alpha_numeric?(char)
if((char =~ /[[:alpha:]]) || (char =~ [[:digits:]]))
true
else
false
end
end
或
def alpha_numeric?(char)
if(char =~ /[[:alnum:]])
true
else
false
end
end
我们正在使用与字母和数字匹配的正则表达式:
上面的[[:alpha:]],[[:digit:]]和[[:alnum:]]是POSIX括号表达式,它们具有在其类别中匹配unicode字符的优点。希望这有助于
在下面的链接中查看更多选项: Ruby: How to find out if a character is a letter or a digit?
答案 3 :(得分:0)
与@ rohit89相似:
VALID_CHARS = [*?a..?z, *?A..?Z, *'0'..'9']
#=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
# "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
# "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
# "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
# "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
def all_valid_chars?(str)
a = str.chars
a == a & VALID_CHARS
end
all_valid_chars?('a9Z3') #=> true
all_valid_chars?('a9 Z3') #=> false
答案 4 :(得分:0)
没有正则表达式:
def validate(str)
str.count("^a-zA-Z0-9").zero? # ^ means "not"
end
答案 5 :(得分:0)
上面有很好的答案,但仅供参考,您的错误消息是因为您使用双引号"
启动了正则表达式。您会注意到您的方法中有双引号的奇数(5)。
此外,您可能希望将true和false作为值而不是作为带引号的字符串返回。
答案 6 :(得分:0)
.match?
。Ruby 2.4 引入了一个方便的返回布尔值的 # Checks for any characters other than letters and numbers.
# Returns true if there are none. Returns false if there are one or more.
#
def valid?( string )
!string.match?( /[^a-zA-Z0-9]/ ) # NOTE: ^ inside [] set turns it into a negated set.
end
方法。
在你的情况下,我会做这样的事情:
reducer(state, action: PayloadAction<{x: string; anotherProp: string; uuid: string}>) {