php正则表达式,用于验证带有通配符的密码

时间:2010-09-30 08:32:22

标签: php regex cakephp

我正在尝试将狂野字符添加到我当前的仅使用字母数字的正则表达式中,以使密码验证更加强大。我不是要求用户输入通配符,只是允许他们输入通配符。

'/^[a-z0-9]{8,16}$/i'

我也在使用cakephp并在模型中进行验证,如果这有帮助,但不是真的需要这个答案。

            'rule' => '/^[a-z0-9]{8,16}$/i',
            'on' => 'create',
            'allowEmpty' => true

3 个答案:

答案 0 :(得分:3)

只需将您想要允许的字符添加到字符类([...]):

/^[a-z0-9!#$%&]{8,16}$/i

答案 1 :(得分:1)

你完全错了。 永远不要使用regexp作为密码字段。这样你不允许任何用户,你只是不允许用户输入任何他想用作密码的东西(也许是一些特殊的字符,如&或{或其他。

无论如何,你的方法伤害的程度超过它的帮助。

你应该做的是鼓励用户使用specialchars和更复杂的密码,只需在密码字段旁边显示“红黄绿”指示符。

答案 2 :(得分:0)

我还认为你应该允许“一切”,从而删除对内容的验证,并且只禁止“空”字符串或太短的字符串(理想情况下使用实时javascript验证作为指示符,以便人们不必在找出有效的方法之前尝试10次。

你不应该关心人们输入什么,即使是日语,因为你要编码这个字符串(我希望!),使用CakePHP的内置函数,使用sha1和md5以及salt,你就会结束最后还有一些无害的东西。

使用$this->Auth->password($string);