验证数字和字母

2024-09-28 19:19:22 发布

您现在位置:Python中文网/ 问答频道 /正文

有些情况下,我需要验证一个填充了数字和字母的字符串,我想知道最简单的方法

例如,在Tic-Tac-Toe/Noughts和crosss中,我需要确保用户输入的位置在“1-3”和“a-c”之间

为了更好地理解我的要求:

pos = "2c"
>>> Input is valid

pos = "1z"
>>> Input is invalid: Letters outside range a-c

pos = "5b"
>>> Input is invalid: Numbers outside range 1-3

Tags: 方法字符串posinputis字母情况range
3条回答

如果没有正则表达式,则可以有如下内容:

def validate(i):
    if type(i) != str or len(i) != 2:
        return False
    d, char = int(i[0]), i[1]
    return d >= 1 and d <= 3 and char in 'abc'

print(validate('1c')) #True
print(validate('3a')) #True
print(validate('2b')) #True

print(validate('36')) # False
print(validate('106')) # False
print(validate('10c')) # False
print(validate(10)) # False

但是,这确实假设输入中的第一个字符可以转换为int

只有9个可能的有效输入,所以您可以检查所有输入,或者使用正则表达式查看输入是否匹配所有有效输入

import re

pattern = re.compile(r'^[123][abc]$')
m = pattern.match("2b")
if m:
    print("It's a match!")

正则表达式r'^[123][abc]$'查找字符串的开头,后跟1、2或3,后跟a、b或c,后跟字符串的结尾。超出该范围(或超过两个字符)的输入不应匹配

使用regex如下:

import re

example_str = '1c'
p = re.compile('^[1-3][a-c]$')

if p.match(example_str):
  # Valid
else:
  # Invalid

您可以使用-在模式中选择范围

相关问题 更多 >