我想制作一个正则表达式来修复密码角色"至少6个字符和1个号码"
这是我的代码:
/^(?=.*?[a-zA-Z]{6,})(?=.*?[0-9]{1,}).{7,}$/
但似乎错了。
2wwwwww>修复
wwwwww2>修复
www2www>没有修复
如何重写正则表达式角色???
答案 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)
表示不区分大小写。