如何匹配正则表达式中的反斜杠

时间:2016-12-22 02:40:50

标签: php regex laravel validation preg-match

我希望我的用户密码具有以下规则:

  1. 至少一个字母,至少一个数字。
  2. 可以包含特殊字符(几乎所有特殊字符) keybord)
  3. 长度超过8个。
  4. 这是我的正则表达式

    /^(?=.*[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,}$/'
            ),
    

    这是真正的代码 enter image description here

    这个使用两个反斜杠的东西也不起作用。 enter image description here

    有人知道为什么吗?

2 个答案:

答案 0 :(得分:1)

您的解决方案在Laravel 5.4中对我不起作用,但是使用4个反斜线却有效(在近端)。如果有人遇到相同的问题,我将其留在这里:

/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d!"#$%&'()*+,-.\/:;<=>?@[\]^_`{|}~\\\\]{8,}$/

DEMO

答案 1 :(得分:0)

这个工作:

enter image description here

正如MateoConLechuga所说,“]”可能会导致问题。所以我用反斜杠来逃避“[”和“]”,因为它们只是“角色”。

此链接Right way to escape backslash [ \ ] in PHP regex?帮助我匹配斜杠,我必须写三(或四)次。