(Notepad++)删除不符合密码规则的行

(Notepad++)Remove lines which doesn't meet password policy

密码政策:

每个密码应至少包含其中的 3 个:

  1. 包含Numbers
  2. 包含a-z
  3. 包含A-Z
  4. 包含special characters !@#$%^&*()_+

例如,这个列表:

12345678
adfghj
AASDFGHJ
!@#$%^&
1234as
1234ASDF
1345!#$%
asdfg!@#$
ASDFGB!#$$
SSRasd
Goodone123
G00done!@#
1@a
Aa1

应该是这样的:

Goodone123
G00done!@#
1@a
Aa1

感谢您的帮助:)

请参阅下面的 npp 正则表达式。 注意:确保选中 Match CaseWrap Around 并选择 Regular expression

^[^\d\l]+$|^[^\d\u]+$|^[^\d\!\@\#$\%\^\&\*\(\)\_\+]+$|^[^\l\u]+$|^[^\l\!\@\#$\%\^\&\*\(\)\_\+]+$|^[^\u\!\@\#$\%\^\&\*\(\)\_\+]+$

正则表达式匹配两个缺失密码条件的所有可能组合:

  1. 缺少数字和小写字母
  2. 缺少数字和大写字母
  3. 缺少数字和特殊字符
  4. 缺少小写字母和大写字母
  5. 缺少小写字母和特殊字符
  6. 缺少大写字母和特殊字符

更新 Notepad++ 参考 How to use regular expressions in Notepad++

让我们看看什么正则表达式可以匹配您的密码:

^                                             # Start of line
 (?:                                          # Start of the alternation group
   (?=.*\d)(?=.*[a-z])(?=.*[A-Z])             # Conditions 1, 2, 3
   |
   (?=.*\d)(?=.*[a-z])(?=.*[!@#$%^&*()_+])    # Conditions 1, 2, 4
   |
   (?=.*\d)(?=.*[A-Z])(?=.*[!@#$%^&*()_+])    # Conditions 1, 3, 4
   | 
   (?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+]) # Conditions 2, 3, 4
   | 
   (?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+]) # Conditions 1, 3, 4
 )
 .*                                           # The line itself is matched
$                                             # Up to the end of line

regex demo

要反转它,我们只需将上面的非捕获 alternation 组转换为 negative lookahead :!:

^                          # Start of line
 (?!                       # A negative lookahead

online demo

要在 Notepad++ 中使用它,检查 Match case 选项 ,然后 添加 \R* 在模式的末尾 也删除删除行之后的换行符。用于NPP的一行:

^(?!(?=.*\d)(?=.*[a-z])(?=.*[A-Z])|(?=.*\d)(?=.*[a-z])(?=.*[!@#$%^&*()_+])|(?=.*\d)(?=.*[A-Z])(?=.*[!@#$%^&*()_+])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+])).*$\R*