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