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

用于使用通配符验证密码的php正则表达式,php,regex,cakephp,Php,Regex,Cakephp,我正在尝试向当前的纯字母数字正则表达式添加通配符,以增强密码验证。我不是试图要求用户输入通配符,只是允许他们输入通配符 '/^[a-z0-9]{8,16}$/i' 我也在使用cakephp,并在模型中进行验证(如果有帮助的话),但这不是这个答案真正需要的 'rule' => '/^[a-z0-9]{8,16}$/i', 'on' => 'create', 'allowEmpty' => true 只需将

我正在尝试向当前的纯字母数字正则表达式添加通配符,以增强密码验证。我不是试图要求用户输入通配符,只是允许他们输入通配符

'/^[a-z0-9]{8,16}$/i'
我也在使用cakephp,并在模型中进行验证(如果有帮助的话),但这不是这个答案真正需要的

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

只需将您希望允许的字符添加到字符类(
[…]
):


只需将您希望允许的字符添加到字符类(
[…]
):


你完全错了。 不要对密码字段使用regexp。这样你就不允许用户输入任何东西,你只是不允许用户输入任何他想用作密码的东西(可能是一些特殊的字符,比如&或{或其他什么)

无论如何,你的方法弊大于利


您应该做的是,只需在密码字段旁边显示一个“红黄绿”指示灯,就可以鼓励用户使用特殊的、更复杂的密码。

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

无论如何,你的方法弊大于利


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

我还认为你应该允许“一切”,从而删除对内容的验证,只禁止“空”字符串或过短字符串(理想情况下,使用实时javascript验证作为一个指标,这样人们就不必尝试10次就可以知道什么是有效的)

你不应该在意人们输入什么,即使是日语,因为你无论如何都要用CakePHP的内置函数、sha1、md5和salt对这个字符串进行编码(我希望如此!),最终你会得到一些无害的东西


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

我还认为您应该允许“一切”,从而删除对内容的验证,并且只禁止“空”字符串或太短的字符串(理想情况下,使用实时javascript验证作为指示器,这样人们就不必尝试10次才知道什么是有效的)

你不应该在意人们输入什么,即使是日语,因为你无论如何都要用CakePHP的内置函数、sha1、md5和salt对这个字符串进行编码(我希望如此!),最终你会得到一些无害的东西


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

什么是通配符?如果您想允许任何字符,只需使用
^.{8,16}$
。你是说有效字符吗?这是针对日语网站的,我不想让他们输入日语字符和其他奇怪的字符。是的,我猜有效字符像!#$%&*etcJason,那么你的客户需要接受教育,为什么对密码施加复杂性限制是愚蠢的。复杂性要求是的,但为什么要设置密码ds故意不太安全?什么是通配符?如果您想允许任何字符,只需使用
^.{8,16}$
。你是说有效字符吗?这是针对日语网站的,我不想让他们输入日语字符和其他奇怪的字符。是的,我猜有效字符像!#$%&*etcJason,那么你的客户需要接受教育,为什么对密码施加复杂性限制是愚蠢的。复杂性要求是的,但为什么要设置密码ds故意不那么安全?
/^[a-z0-9!#$%&]{8,16}$/i