我尝试使用正则表达式检查变量是否接受字母和数字。这是我的定义:
def special_match(strg, search=re.compile(r'[a-z0-9]').search):
if bool(search(strg)) is True:
print ('Yes: ' + strg)
elif:
print ('nej: ')
while 1:
variabel = raw_input('Enter something: ')
special_match(variabel)
sys.exit()
似乎接受不允许符号与允许符号的组合:
Enter something: qwerty
Yes: qwerty
Enter something: 1234
Yes: 1234
Enter something: !!!!
nej!
Enter something: 1234qwer!!!!
Yes: 1234qwer!!!!
Enter something:
最后一个不应该被接受..我做错了什么?
最佳答案
所有正则表达式搜索所做的就是检查是否至少存在一个字符。
如果你想要求整个字符串只包含这些字符,那么你可以使用:
r'^[a-z0-9]*$'
它将模式锚定在字符串的开头和结尾,并且仅当中间的所有字符都在指定的字符集中时才匹配。
请注意,这也将匹配空字符串。如果您希望至少需要一个字符,则可以将 *
更改为 +
。
关于python - re.rompile 返回 true 和 false,不允许使用符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35600918/