Python 由数字和字母组成的特定长度的匹配字符串
所以我做了这个练习,但无法解决它: 我只能接受一个字符串,如果它是由数字和字母构成的,那么它必须至少包含这两个字符中的一个;它必须有6-8个字符长。字符串只有一个单词 第一部分很好,但我不确定是否使用match:Python 由数字和字母组成的特定长度的匹配字符串,python,regex,Python,Regex,所以我做了这个练习,但无法解决它: 我只能接受一个字符串,如果它是由数字和字母构成的,那么它必须至少包含这两个字符中的一个;它必须有6-8个字符长。字符串只有一个单词 第一部分很好,但我不确定是否使用match: re.match('([a-zA-Z]+[0-9]+)', string) 但是我不知道如何指定长度,它应该是数字和字母加起来的长度。这是行不通的,我想无论如何也不应该这样: re.match('([a-zA-Z]+[0-9]+){6,8}', string) 谢谢你的帮助。试试这
re.match('([a-zA-Z]+[0-9]+)', string)
但是我不知道如何指定长度,它应该是数字和字母加起来的长度。这是行不通的,我想无论如何也不应该这样:
re.match('([a-zA-Z]+[0-9]+){6,8}', string)
谢谢你的帮助。试试这个:
^(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z\d]{6,8}$
说明:
^ //The Start of the string
(?=.*\d) //(?= ) is a look around. Meaning it
//checks that the case is matched, but
//doesn't capture anything
//In this case, it's looking for any
//chars followed by a digit.
(?=.*[a-zA-Z]) //any chars followed by a char.
[a-zA-Z\d]{6,8}//6-8 digits or chars.
$ //The end of the string.
这个方法奏效了,解释及时地来了,阻止了我在试图找出答案时过度使用大脑。现在一切都清楚了,非常感谢!我一直在想,我还有一个问题:可能只有第一个字符是数字,其余的都是字母,或者反过来。在这种情况下,您的this代码不会接受字符串,而它是正确的。也有办法解决这个问题吗?我现在不需要它,我只是感兴趣。它会接受字符串,因为
*
匹配0或更多