我希望我的用户密码具有以下规则:
这是我的正则表达式
/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d!"#$%&'()*+,-.\/:;<=>?@[\]^_`{|}~]{8,}$/
但它与反斜杠不匹配。 例如,密码&#34; 3e5t1qa2w \&#34;会失败。
我使用laravel(php框架)验证,所以完整代码是这样的:
'password' => array(
'sometimes',
'required',
'between:8,32',
'regex:/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d!"#$%&\'()*+,-.\/:;<=>?@[\]^_`{|}~]{8,}$/'
),
有人知道为什么吗?
答案 0 :(得分:1)
您的解决方案在Laravel 5.4中对我不起作用,但是使用4个反斜线却有效(在近端)。如果有人遇到相同的问题,我将其留在这里:
/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d!"#$%&'()*+,-.\/:;<=>?@[\]^_`{|}~\\\\]{8,}$/
答案 1 :(得分:0)
这个工作:
正如MateoConLechuga所说,“]”可能会导致问题。所以我用反斜杠来逃避“[”和“]”,因为它们只是“角色”。
此链接Right way to escape backslash [ \ ] in PHP regex?帮助我匹配斜杠,我必须写三(或四)次。