0

私のコードは次のようになります...

if re.match('[a-z]',usrInput):
    run onlyLetters function
elif re.match('[0-9]',usrInput):
    run onlyNumbers function
elif re.match('[a-z0-9]',usrInput):
    run lettersAndNums function

問題は、 などのテキストを入力する'2394jsdkfjsdkm'と、if ステートメントの最初の条件を満たすため、onlyLetters として読み取られることです。このような入力は、lettersAndNums にしたいと思っています。コードを変更するにはどうすればよいですか?

4

2 に答える 2

3

文字列がすべて数字、文字、または英数字であるかどうかを確認したいだけの場合:

if usrInput.isalpha():
    # all letters
elif usrInput.isdigit():
    # all numbers
elif usrInput.isalnum():
    # all letters or numbers

これは大文字と小文字の両方を許可することに注意してください。小文字のみが必要な場合は、 を追加しand usrInput.islower()ます。

于 2012-09-25T02:12:49.970 に答える
1

コードは、最初の文字がパターンに一致することのみを確認します。string 内のすべての文字がパターンに一致することを確認したい場合は[pattern]*$、次のように を使用します。

if re.match('[a-z]*$',usrInput):
    run onlyLetters function
elif re.match('[0-9]*$',usrInput):
    run onlyNumbers function
elif re.match('[a-z0-9]*$',usrInput):
    run lettersAndNums function

これは*、「文字の任意の数」を$意味し、「文字列の末尾」を意味するためです。

于 2012-09-25T02:09:19.233 に答える