我一直在研究一个项目,我要检查用户输入的字符串是否是字母数字。 现在,我已经构建了我的代码,并且有一个函数需要检查是否有任何单词是否为字母数字。 该程序是让用户输入一个句子以及他的许可证号码,这个号码将是'221XBCS'之类的字母数字。因此,如果用户输入假设 - '我的许可证号是221124521'而不是221XBCS我希望程序停止。 但我当前的程序假设re.match条件始终为true。为什么这么做?
import re
s = input("Please enter here:")
if re.search(r'\bnumber \b',s):
x = (s.split('number ')[1])
y = x.split()
z = y[0]
print(z)
if re.match('^[\w-]+$', z):
print('true')
else:
print('False')
输出现在看起来像这样:
Please enter here:my license number is 221
is
true
我希望我的程序从输入中获取alnum值。这就是全部!
答案 0 :(得分:0)
使用正则表达式,以相反的方式查看问题通常很有价值。 在这种情况下,更好的方法是查看字符串是不是纯粹的数字,而不是查看它是否是字母数字。
if re.match('[^\d]', z):
print('The string is no a pure numerical')
答案 1 :(得分:0)
我想我理解你的情况:用户应该输入他的许可证号码,该号码应该只包含字母字符 AND 数字(两者):
内置函数:
s = input("Please enter here:")
l_numbers = list(filter(lambda w: not w.isdigit() and not w.isalpha() and w.isalnum(), s.strip().split()))
l_number = l_numbers[0] if l_numbers else ''
print(l_number)
我们假设用户输入了My license number is 221XBCS thanks.
输出将是:
221XBCS