[英]Do not allow special characters except the allowed characters javascript regex
我的密碼強度指示器具有以下javascript代碼:
if (password.match(/([!,@,#,$,%])/)
{
strength += 2
}
因此,如果密碼包含以下允許的字符之一(!,@,#,$,%),它將為指示符的強度添加一個值。
我的問題是,一旦密碼上出現其他特殊字符,我也想降低密碼指示器的強度。 例如:^,`,〜,<,>
為了消除混亂,除了上面出現的那些特殊字符(!,@,#,$,%)外,基本上我不需要任何其他特殊字符。 所以我做了硬編碼,寫了所有我不需要的特殊字符。
我嘗試使用此:
if (password.match(/([^,`,~,<,>])/)
{
strength -= 2
}
但是我也不想包含"
'
和"
'
,
但是如果我在if條件中包含它們,它將拋出一個錯誤,指出正則表達式的語法錯誤。我理解這是因為我知道"
代表一個字符串,必須被關閉。 我可以做些什么嗎? 提前致謝!
您無需將各個字符用逗號分隔,也不需要將唯一的術語用括號括起來。
這應該工作:
/[`^~<>,"']/
注意克拉( ^
不在最前面,當放在[]
塊的開始時有特殊含義)
另外,您應該使用test()
因為您只需要布爾的if-contains結果
/[`^~<>,"']/.test(password)
你想要做的就是逃避各自的"
, '
和,
使用\\
你要找的正則表達式為:
/([\^\`\~\<\,\>\"\'])/
我實際上是使用JSVerbalExpressions庫生成的。 我強烈建議您檢查一下! 為了展示它的功能,生成上述正則表達式的代碼為:
var tester = VerEx()
.anyOf("^,`'\"~<>");
console.log(tester); // /([\^\`\~\<\,\>\"\'])/
將這些特殊字符包括在不帶逗號的方括號中,並查看其是否有效。
您可以在這里嘗試-http://jsfiddle.net/BCn7h/
例如:
if (password.match(/["',]/)
{
strength -= 2
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.