2016-12-22 48 views
2

匹配我希望我的用戶密碼有這樣的規則:如何反斜槓在正則表達式

  1. 至少一個字母,至少一個數字。
  2. 可以包含特殊字符( keybord幾乎所有特殊字符)
  3. 長度超過8

這是我的正則表達式

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

,但它不匹配回斜線。例如, ,密碼「3e5t1qa2w」將失敗。

我用laravel(PHP框架)的驗證,所以完整的代碼是這樣的:

 'password' => array(
      'sometimes', 
      'required', 
      'between:8,32', 
      'regex:/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d!"#$%&\'()*+,-.\/:;<=>[email protected][\]^_`{|}~]{8,}$/' 
     ), 

這裏是真正的代碼 enter image description here

而這一次它使用兩個反斜槓不列入工作過。 enter image description here

有人知道爲什麼嗎?

+0

我相信你需要用另一個反斜槓來避開反斜線。 – MateoConLechuga

+0

是的,我喜歡...... [back slash back slash] ........但是沒有工作 – chii

+0

'/'是斜槓或正斜槓; '''''是反斜槓。 – Chris

回答

0

這一項工作:

enter image description here

正如MateoConLechuga所說, 「]」 可能會導致問題。所以我用反斜槓逃避了「[」和「]」,這就是他們只是「角色」。

和這個鏈接Right way to escape backslash [ \ ] in PHP regex?幫助我匹配回斜槓我必須寫它三(或四)次。

相關問題