验证数字和字母

时间:2018-10-11 14:48:39

标签: python validation

在某些情况下,我需要验证包含数字和字母的字符串,并且我想知道最简单的方法

例如,在井字游戏/ Noughts and 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

3 个答案:

答案 0 :(得分:0)

只有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,然后是字符串的结尾。超出该范围(或超过两个字符)的任何输入都不应匹配。

答案 1 :(得分:0)

没有正则表达式,您可能会遇到类似这样的情况:

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

答案 2 :(得分:0)

按以下方式使用正则表达式:

import re

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

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

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