像Python一样?我正在尝试检查字符串中的每个字符是否都是字母数字?
答案 0 :(得分:21)
有一个特殊的角色类:
char.match(/^[[:alpha:]]$/)
这应匹配单个字母字符。它似乎也适用于UTF-8。
测试整个字符串:
string.match(/^[[:alpha:]]+$/)
请注意,这并不考虑空格或标点符号。
答案 1 :(得分:18)
如果您只想匹配不带数字的字母,可以自行滚动:)将alnum
替换为alpha
。
class String
def alpha?
!!match(/^[[:alnum:]]+$/)
end
end
'asdf234'.alpha? # => true
'asdf@#$'.alpha? # => false
答案 2 :(得分:5)
python函数仅适用于ASCII字符; [[:alnum]]正则表达式会做“tëst”.alpha这样的事情? =>真正。
match/\w/
匹配下划线,因此离开
def isalpha(str)
return false if str.empty?
!str.match(/[^A-Za-z]/)
end
重现Python的行为。
答案 3 :(得分:3)
如果您难以记住正则表达式(像我一样!),这是一种无需正则表达式的方法:
def alpha?(char)
char.upcase != char.downcase
end
对于除字母以外的任何其他字符,#upcase
和#downcase
均有效,但无效,因此我们可以断言char的大小写值不等于确定它是字母。