我需要过滤包含一个或多个数字,一个或多个大写符号和一个或多个小写符号的所有字符串。
我创建了下一个正则表达式语句:[0-9]+[A-Z]+[a-z]+
。它可以按照我的要求运行,但有一些问题。它仅在数字,大写,小写逐个且仅按此顺序时才过滤字符串。我知道必须有一些修复来指定“在字符串的任何部分以任何顺序查找此子字符串”。但我在文档中找不到这个。
有一些例子:
input: d23de32 output: false
input: ffFF88 output: true
input: ferGr444 output: true
input: 12343534 output: false
input: AAAA444 output: false
P.S。我不知道它是否重要,但问题在于python中的正则表达式。
答案 0 :(得分:2)
你需要在这里使用前瞻,
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).*$
仅匹配字母数字字符串。
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])[A-Za-z0-9]*$
(?=.*?[A-Z]) - Positive lookahead is used here which asserts that the input must contain an uppercase letter.
(?=.*?[a-z]) - Asserts that the input contains a lowercase letter.
(?=.*?[0-9]) - Asserts that the input contains a digit.