我正在尝试使用正则表达式来匹配文件上的用户名密码对,这些文件具有至少1个大写字母,1个小写字母,1个数字和1个符号。我正在使用以下正则表达式:
\b(([a-zA-Z0-9]){5,20}((\\\\=)|( ?([=:]|(->)) ?)|( =\\))((?=.[a-z#{@specialDown}])(?=.*[A-Z#{@specialUp}])(?=.+[0-9])(?=.+[\!\@\#\$\%\^\&\*\(\)\_\+\|\~\-\=\\`\{\}\[\]\:\;\'\<\>\?\,\.\/])).{8,20})\b
specialDown和specialUp变量分别是小写和大写的特殊字母。
这里的问题是我用空格获取密码,这是我不想要的。
有人可以帮忙吗?
答案 0 :(得分:1)
您可以使用.
或[^\s]
替换正则表达式中的所有\S
,以排除匹配的空格。此外,您有多个?
模式,它们也允许空格。请检查是否有必要。
因此,固定模式将如下所示:
\b(([a-zA-Z0-9]){5,20}((\\\\=)|( ?([=:]|(->)) ?)|( =\\))((?=[^\s][a-z#{@specialDown}])(?=[^\s]*[A-Z#{@specialUp}])(?=[^\s]+[0-9])(?=[^\s]+[\!\@\#\$\%\^\&\*\(\)\_\+\|\~\-\=\\`\{\}\[\]\:\;\'\<\>\?\,\[^\s]\/]))[^\s]{8,20})\b