匹配文本中的典型密码模式

时间:2018-02-13 12:35:26

标签: regex

我需要正则表达式在文本文件中搜索典型的密码模式,例如

包含小写字母,大写字母和数字的单词,在任意文本中长度为6-30个字符,如下所示。

This is some sample text containing an email address of michael.knight@knightrider2000.com 
and some cryptic secret like am2Nals2kdP5 and even more text.

我想匹配am2Nals2kdP5,但该示例中没有其他内容。

我尝试了\s[a-zA-Z0-9]{6,30}\s,但这也与containing之类的其他字相匹配。我理解这是因为[...]匹配任何字符,而不是所有字符。但是我找不到合适的语法。

1 个答案:

答案 0 :(得分:1)

您的正则表达式\s[a-zA-Z0-9]{6,30}\s会匹配任何空格字符\s,这些范围[a-zA-Z0-9]中的任何一个都有{6,30}用于重复,后跟任何空格字符\s

这将匹配例如aaaaaa1Aa2bbzzzzzzz

您可以使用positive lookaheads (?=断言后面的内容包含小写字符,大写字符和数字。

例如:

(?=[A-Z\d]*[a-z])(?=[a-z\d]*[A-Z])(?=[a-zA-Z]*[\d])[a-zA-Z\d]{6,30}

注意,这不会考虑之前和之后的空白。

要做到这一点,你在开始时could add一个肯定的后瞻(?<=^|\s)来断言前面的内容是字符串的开头或任何空白字符,并添加一个正向前瞻(?=$|\s)断言后面是字符串的结尾或任何空白字符。