【发布时间】:2013-09-04 21:41:42
【问题描述】:
首先我是一个正则表达式的菜鸟,所以这可能会进一步优化,如果是这样,请告诉我该怎么做。不管怎样,看了几篇关于正则表达式的文章后,我写了一个小正则表达式来满足我的密码匹配需求:
(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(^[A-Z]+[a-z0-9]).{8,20}
我要做的是:它必须以大写字母开头,必须包含小写字母,必须至少包含一个数字,必须至少包含一个特殊字符,并且长度必须在 8-20 个字符之间。 以上以某种方式有效,但它不会强制使用特殊字符(。似乎匹配任何字符,但我不知道如何将它与正前瞻一起使用)并且最小长度似乎是 10 而不是 8。我在做什么错了吗?
PS:我正在使用http://gskinner.com/RegExr/ 进行测试。
【问题讨论】:
-
您希望允许哪些特殊字符?
-
(?=.*[A-Z])检查您是否知道密码必须以大写字母开头(即您有^[A-Z]+[a-z0-9])有什么意义? -
哦,愚蠢的密码:> 只需要 12 个字符(可能限制为 100 个),其他的就随便了。
-
正则表达式的方言大约有一百万种,您为什么语言或工具编写正则表达式?
-
但是是的,
.在大多数正则表达式方言 except 中,当它被转义\.或在字符类 @987654327 中时,将匹配任何东西 @(有时也有一些行尾警告)。
标签: regex