2016-10-28 139 views
0

我怎樣才能做到這一點的密碼有(反斜槓,正斜槓,單引號,雙引號),然後,然後只它不會允許否則將使用自定義validation.i不要返回true對preg_match沒有太多的想法,所以所有的建議都可以接受。的preg_match允許特定特殊字符的字符串

我曾嘗試下面的代碼來實現這一點,但不能獲得成功。

因此,任何人有一些建議/想法?

PHP代碼:

public function check_password($str){ 
     return (!preg_match("/^[[email protected]#$%^&*()_-+|;:<>,.?]+$/i", $str)) ? FALSE : TRUE; 
    } 

如果我會把排除(反斜槓,正斜槓,單引號,雙引號),那麼它必須允許我在數據庫

存儲密碼例如:

Password : [email protected]#$%^&*()_-+| ;:<>, // true 
Password : /12345    //false 
Password : [email protected]#$%^&*()_-+| ;:<> //true(here white space also allowed) 
+0

你只想測試你正在堅持的那些字符。所以像''/ [\\\/\'「] /''這樣的東西你不需要像'a-z0-9'那樣的東西,因爲即使沒有任何異國字符也能滿足測試。 – arkascha

+0

@ arkascha感謝您的回覆 –

+0

憑什麼我achive,因爲我曾試圖用「/ \\\/\」「] /」,但它不工作:( –

回答

1

如果我理解正確,你只想要這個字符 - 反斜槓,正斜槓,單引號,雙引號是禁用你的密碼驗證。所以這裏是代碼:

public function check_password($str){ 
    return (preg_match('/^[^\\\"\'\/]+$/i', $str)); 
} 
+0

似乎與代碼 –

+0

的報價問題感謝您的評論。固定。 – krasipenkov

+0

其密碼/ 12345返回true而不是false –

0

嘗試這樣,

public function check_password($str){ 
return (!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[[email protected]#$%]{8,12}$/', $str)) ? FALSE : TRUE; 
} 
+0

如果我要存儲密碼!@#$%^&*()_- + | ;:<>,然後拋出false而不是true –

+0

只需使用'!'運算符刪除&嘗試。 –