如何让密码修复正则表达式规则?

时间:2014-06-04 17:03:35

标签: regex

我想制作一个正则表达式来修复密码角色"至少6个字符和1个号码"

这是我的代码:

/^(?=.*?[a-zA-Z]{6,})(?=.*?[0-9]{1,}).{7,}$/

但似乎错了。

2wwwwww>修复

wwwwww2>修复

www2www>没有修复

如何重写正则表达式角色???

4 个答案:

答案 0 :(得分:4)

关于贬低的风险......

为什么不使用两个正则表达式:一个检查最少六个字符:

/([A-Za-z].*){6,}/

另一个正则表达式,用于检查具有至少一个数字的字符串的相同行:

/[0-9]/

如果您使用grep,则可以使用管道(bash中的|)来检查它们:

grep -P "([A-Za-z].*){6,}" < file | grep -P "[0-9]"

理论上可以写出这样的条件作为一个正则表达式,但是如果正则表达式倾向于炸毁所需项目的数量及其最小基数。


如果您真的想要一个正则表达式,请尝试:

/[0-9].*[A-Za-z].*[A-Za-z].*[A-Za-z].*[A-Za-z].*[A-Za-z].*[A-Za-z].*|
 [A-Za-z].*[0-9].*[A-Za-z].*[A-Za-z].*[A-Za-z].*[A-Za-z].*[A-Za-z].*|
 [A-Za-z].*[A-Za-z].*[0-9].*[A-Za-z].*[A-Za-z].*[A-Za-z].*[A-Za-z].*|
 [A-Za-z].*[A-Za-z].*[A-Za-z].*[0-9].*[A-Za-z].*[A-Za-z].*[A-Za-z].*|
 [A-Za-z].*[A-Za-z].*[A-Za-z].*[A-Za-z].*[0-9].*[A-Za-z].*[A-Za-z].*|
 [A-Za-z].*[A-Za-z].*[A-Za-z].*[A-Za-z].*[A-Za-z].*[0-9].*[A-Za-z].*|
 [A-Za-z].*[A-Za-z].*[A-Za-z].*[A-Za-z].*[A-Za-z].*[A-Za-z].*[0-9].*/

没有换行符(此处仅用于说清楚)。 .*部分也用于允许字符之间的噪音。

答案 1 :(得分:2)

您不需要将所有内容都填充到单个正则表达式中。我强烈建议您使用多个正则表达式进行密码验证。验证是否有一个数字,另一个用于检查大写字母,另一个用于小写字母等。它将更具可读性,如果您更改密码要求,以后更容易修改。

答案 2 :(得分:0)

我不认为正则表达式有助于此任务,但请尝试:

(?=.*[a-zA-Z][0-9]*[a-zA-Z][0-9]*[a-zA-Z][0-9]*[a-zA-Z][0-9]*[a-zA-Z][0-9]*[a-zA-Z].*)(?=.*[0-9].*)

答案 3 :(得分:0)

我会这样做:

^(?=(?:.*[a-zA-Z]){6})(?=.*[0-9])[a-zA-Z0-9]{7,}$

匹配至少包含6个字母和1个数字的字符串。

可以改写为:

^(?i)(?=(?:.*[a-z]){6})(?=.*[0-9])[a-z0-9]{7,}$

其中(?i)表示不区分大小写。