Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 由数字和字母组成的特定长度的匹配字符串_Python_Regex - Fatal编程技术网

Python 由数字和字母组成的特定长度的匹配字符串

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) 谢谢你的帮助。试试这

所以我做了这个练习,但无法解决它:

我只能接受一个字符串,如果它是由数字和字母构成的,那么它必须至少包含这两个字符中的一个;它必须有6-8个字符长。字符串只有一个单词

第一部分很好,但我不确定是否使用match:

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或更多