用户名密码正则表达式

时间:2015-04-06 15:15:28

标签: ruby regex passwords

我正在尝试使用正则表达式来匹配文件上的用户名密码对,这些文件具有至少1个大写字母,1个小写字母,1个数字和1个符号。我正在使用以下正则表达式:

\b(([a-zA-Z0-9]){5,20}((\\\\=)|( ?([=:]|(->)) ?)|( =\\))((?=.[a-z#{@specialDown}])(?=.*[A-Z#{@specialUp}])(?=.+[0-9])(?=.+[\!\@\#\$\%\^\&\*\(\)\_\+\|\~\-\=\\`\{\}\[\]\:\;\'\<\>\?\,\.\/])).{8,20})\b

specialDown和specialUp变量分别是小写和大写的特殊字母。

这里的问题是我用空格获取密码,这是我不想要的。

有人可以帮忙吗?

1 个答案:

答案 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