像 Python 一样?我正在尝试检查字符串中的每个字符是否是字母数字?
问问题
15803 次
4 回答
26
为此有一个特殊的字符类:
char.match(/^[[:alpha:]]$/)
那应该匹配单个字母字符。它似乎也适用于 UTF-8。
要测试整个字符串:
string.match(/^[[:alpha:]]+$/)
请记住,这不包括空格或标点符号。
于 2012-05-17T14:30:16.520 回答
19
您可以自己滚动 :)如果您只想匹配字母而不匹配数字,请alnum
替换为。alpha
class String
def alpha?
!!match(/^[[:alnum:]]+$/)
end
end
'asdf234'.alpha? # => true
'asdf@#$'.alpha? # => false
于 2012-05-17T14:32:35.723 回答
5
python 函数仅适用于 ASCII 字符;[[:alnum]] 正则表达式会做“tëst”.alpha 之类的事情吗?=> 真的。
match/\w/
匹配下划线,所以留下
def isalpha(str)
return false if str.empty?
!str.match(/[^A-Za-z]/)
end
重现 Python 行为。
于 2012-05-17T15:11:11.620 回答
4
如果您无法记住正则表达式(像我一样!),这是一种无需正则表达式的方法:
def alpha?(char)
char.upcase != char.downcase
end
对于除字母之外的任何其他字符,#upcase
并且#downcase
工作但没有效果,因此我们可以断言 char 的大写和小写值不相等来确定它是一个字母。
于 2020-03-16T18:28:36.883 回答