15

像 Python 一样?我正在尝试检查字符串中的每个字符是否是字母数字?

4

4 回答 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 回答