任何人都可以幫我寫下以下描述的正則表達式嗎?要驗證密碼的JavaScript
密碼包含從至少三個以下五類的字符:
- 英文大寫字符(A - Z)
- 英文小寫字符(A - Z)
- 10個基本數字( !0 - 9)
- 非字母數字(例如:,$#或%)
- Unicode字符
密碼的最小長度是6.
任何人都可以幫我寫下以下描述的正則表達式嗎?要驗證密碼的JavaScript
密碼包含從至少三個以下五類的字符:
密碼的最小長度是6.
更好的處理方法是分割每個條件併爲每個條件設置一個正則表達式。然後統計輸入的密碼有多少已滿足。通過這種方式,您甚至可以告訴用戶密碼是否平均,符合標準或非常強大的密碼。
if (password.length < 6) {
alert("password needs to be atleast 6 characters long");
}
var count = 0;
//UpperCase
if(/[A-Z]/.test(password)) {
count += 1;
}
//Lowercase
if(/[a-z]/.test(password)) {
count += 1;
}
//Numbers
if(/\d/.test(password)) {
count += 1;
}
//Non alphas(special chars)
if(/\W/.test(password)) {
count += 1;
}
if (count < 3) {
alert("password does not match atleast 3 criterias");
}
不知道如何使用正則表達式匹配unicode字符。休息所有條件都在上面提供。
這是一條評論,而不是答案。 (完全同意,順便說一句) – 2010-09-09 07:36:02
更新了答案 – 2010-09-09 09:31:54
由於薩欽,它工作正常 – Abhimanyu 2010-09-09 09:42:22
[A-Za-z!$#%\d\u0100]{6}
比賽aS1%eĀ
。
\u0100
是爲Â。你可以插入你需要的其他Unicode代碼。你可以找到它們here。
編輯:至少6個字符正確的正則表達式是[A-Za-z!$#%\d\u0100]{6,}
。編輯2:要包含一系列的Unicode字符(讓它是拉丁字母擴展-B),正則表達式應該看起來像^[A-Za-z!$#%\d\u0100-\u017f]{6,}$
。您可以找到Unicode代碼範圍here。
編輯3:我開發了一個小函數來檢查給定的密碼是否符合標準。您需要在函數中定義unicode範圍。
function isValidPassword(password) {
var unicodeRange = "\\u0100-\\u0105";
var criteria = ["A-Z","a-z","\\d","!$#%",unicodeRange];
// check whether it doesn't include other characters
var re = new RegExp("^[" + criteria.join("") +"]{6,}$");
if(!re.test(password)) return false;
var minSatisfiedCondition = 3;
var satisfiedCount = 0;
for(var i=0; i < criteria.length; i++) {
re = new RegExp("[" + criteria[i] + "]");
if(re.test(password)) ++satisfiedCount;
}
return (satisfiedCount >= minSatisfiedCondition);
}
有一個工作樣品here。
爲什麼downvote? OP不希望創建基於Javascript的登錄,而是在用戶指定密碼時進行簡單驗證。 – 2010-09-09 07:34:32
關於僞強密碼的一些舊評論:http://www.codinghorror.com/blog/2005/07/passwords-vs-pass-phrases.html – Douglas 2010-09-09 08:24:15
對於正則表達式來說,這不是一個簡單的任務。正如Sachin在他的anser中提出的那樣,編寫你自己的字符串解析例程將會更容易,並且如果你的標準匹配,它會被計數。 – splash 2010-09-09 08:33:10