问个正则问题...



QUOTE:
原帖由 ly5066113 于 2009-1-10 09:05 发表
+应该都可以去掉。



QUOTE:
原帖由 ynchnluiti 于 2009-1-10 00:10 发表

他那个看起来比较酷。

在我看来,那属于不必要的复杂。


QUOTE:
原帖由 ynchnluiti 于 2009-1-10 00:10 发表

他那个看起来比较酷。不过性能和准确性没有验证。

PS:我写的那个还要加个长度的判断

今天又看了下,确实准确性有问题,我随机了一组数据进行检验,发现其中有判断错误的,比如下面这组值:

nTP7L%sPAC
O$5KErtOQ8
wp1MaL$uf$
xHIOdsA9i$
wj5VeRE8%E


还没有找到原因,至于环视的性能应该不是什么大问题,我随机一组字串(10万个)判断,效率还是可以接受的
$ time ./passwd-verify.pl
PASS : 35311
FAIL : 66377
TOTAL: 101688

real    0m4.892s
user    0m1.009s
sys     0m0.299s



关键现在准确性都不能保障,就不行了

另外,我们都忽略了一个问题,其实串中可能还会含非法字符的

---update---
修改后重新测试了一下效率,之前有误
$ time ./passwd-verify.pl
--------------------------
Benchmarking within perl :
Took 0.216 seconds
--------------------------

PASS : 37134
FAIL : 64554
TOTAL: 101688

real    0m0.252s
user    0m0.217s
sys     0m0.005s




QUOTE:
原帖由 wertyu 于 2009-1-10 13:29 发表


今天又看了下,确实准确性有问题,我随机了一组数据进行检验,发现其中有判断错误的,比如下面这组值:

nTP7L%sPAC
O$5KErtOQ8
wp1MaL$uf$
xHIOdsA9i$
wj5VeRE8%E


还没有找到原因,至于环视的性 ...

/^(?=.*\d)(?=.*[[:lower:]])(?=.*[[:upper:]])(?=.*[!@#\$%\^&\*]).{8,}$/


原来是忘了转义[]里的特殊字符了



QUOTE:
原帖由 MMMIX 于 2009-1-10 11:40 发表

在我看来,那属于不必要的复杂。

恩,接受意见,尽量用更清晰的方法