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 に答える