2017-04-12 149 views
3

我是新的角js。我創建了一個登錄屏幕。我需要驗證我的密碼。它應該包含-'[email protected]£!%*#?&'以及至少一個字母和數字中的一個特殊字符。目前它接受所有特殊字符,沒有任何限制。我有以下代碼正則表達式密碼驗證angularjs

if (vm.newpassword_details.password.search("^(?=.*?[A-Za-z])(?=.*?[0-9])(?=.*?[[email protected]£!%*#?&]).{8,}$")) { 
    var msg = "Password should contain one special character from -'[email protected]£!%*#?&' and at least one letter and number"; 
    alert(msg); 
} 
+0

你的意思你想限制用戶可以使用密碼的字符?這不是最佳做法。你可以用'/^(?=.*?[A-Za-z])(?=.*?[0-9])(?=.*?[[email protected]£!%*#?&& ])[A-Za-z0-9 $ @£!%*#?&] {8,} $ /'正則表達式。 –

回答

1

注意,目前的正則表達式規定 4種限制:

  1. 至少有一個ASCII字母((?=.*?[A-Za-z])
  2. 至少有一位數((?=.*?[0-9])
  3. 集合中至少有一個特定字符((?=.*?[[email protected]£!%*#?&])
  4. 整個字符串sho ULD具有至少8個字符(.{8,}

.的在.{8,}可以匹配比換行符字符其它任何炭。

如果您打算限制.,只允許用戶鍵入您的集字符,從他們創造一個超集,並與RegExp#test使用它:

if (!/^(?=.*?[A-Za-z])(?=.*?[0-9])(?=.*?[[email protected]£!%*#?&])[[email protected]£!%*#?&]{8,}$/.test(vm.newpassword_details.password)) { /* Error ! */ } 

regex demo

+1

成功運行。 –