簡體   English   中英

Javascript正則表達式驗證密碼字符串(轉義標點符號)

[英]Javascript regex validate password string (escaping punctuations)

我正在嘗試使用javascript驗證密碼字符串,並需要一些正則表達式的幫助。 我已經嘗試了一些教程,但我認為我在理解如何逃避量詞和/或元字符時遇到了一些問題。

我想確保密碼字符串只包含以下跨度中的一個或多個(最多32個)字符:

"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"012345678901234567890123456789"
"!@#%&/(){}[]=?+*^~-_.:,;"

前三個跨度非常簡單,但我無法弄清楚最后一個。 基本上我的腳本看起來像這樣:

var password = "user_input_password";

if (/^[A-Za-z0-9!@#$%...]{1,32}$/.test(password)) {
    document.write('OK');
} else {
    document.write('Not OK');
}

任何幫助或輸入都非常感謝,謝謝!

通常,您可以使用反斜杠\\來轉義元字符; 但是,在一個角色類中,你必須逃脫的只有]\\-^一開始只有意義)。 [\\w!@#%&/(){}[\\]=?+*^~\\-.:,;]會做你想要的。

\\w等於[A-Za-z0-9_]

所以完整的測試將是這樣的:

/^[\w!@#%&/(){}[\]=?+*^~\-.:,;]{1,32}$/.test(password)
/^[A-Za-z0-9!@#%&\/(){}\[\]=?+*^~\-_\.:,;]{1,32}$/

您還可以匹配所有不被視為空格的字符(空格,換行符,制表符)

/^[^\s]{1,32}$/.test(password);

要排除引號(我在您的示例中沒有看到它們),您可以將它們添加到:

/^[^\s'"]{1,32}$/.test(password);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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