我有以下正则表达式来检查密码策略。这是验证工作:将普通正则表达式转换为bash证明正则表达式
(^([zZ]\d{3})*$)|((?=.{9,})(?=.*?[^\w\s])(?=.*?[0-9])(?=.*?[A-Z]).*?[a-z].*)
我想用正则表达式的bash脚本来验证psssword方式如下:
echo $password | grep "(^([zZ]\d{3})*$)|((?=.{9,})(?=.*?[^\w\s])(?=.*?[0-9])(?=.*?[A-Z]).*?[a-z].*)"
if [[ $? -eq 0 ]] ; then
这并不在bash工作。 我的问题是:
如何将此“纯”正则表达式转换为在bash中工作的正则表达式?哪些字符是否需要转义,将正则表达式传递给grep的正确方法是什么?有什么其他的事情我需要注意吗?
谢谢
无关你的问题:这是一个奇怪的密码策略。一组有效的密码以'z'开头,并且后面有三位数字?我的电话*可能会在几秒钟内破解:) – 2012-04-19 08:19:19
@TimPietzcker我不是一个正则表达式专家,但它应该匹配策略'至少9个字符,并且每个4个字符类中至少有一个字符(字母大写,小写和大写;数字,符号)。“你说的没错,我应该纠正第一部分 – Michael 2012-04-19 08:25:04
更糟糕的是:即使是空字符串也是有效的密码!我会为我的回答添加一个分析。 – 2012-04-19 08:32:05