按任意顺序查找符号条目

时间:2014-09-25 11:14:51

标签: python regex

我需要过滤包含一个或多个数字,一个或多个大写符号和一个或多个小写符号的所有字符串。

我创建了下一个正则表达式语句:[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中的正则表达式。

1 个答案:

答案 0 :(得分:2)

你需要在这里使用前瞻,

^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).*$

仅匹配字母数字字符串。

^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])[A-Za-z0-9]*$

DEMO

(?=.*?[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.