簡體   English   中英

不允許使用特殊字符,但允許的字符除外javascript regex

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM