1.情景展示
在注冊時,密碼要求必須同時包含:字母、數字、特殊字符,如何實現?
2.原因分析
用正則表達式進行校驗,是最方便的!
3.解決方案
// 密碼必須由 8-64位字母、數字、特殊符號組成
var reg = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/]).{8,64}$/;
if (reg.test(password)) {// 驗證通過
}
4.實際應用
HTML片段
<table class="table_add" border="0" width="100%">
<tr>
<td align="right" class="FormItemText" width="30%">
密碼:
</td>
<td class="FormItemControl" width="70%">
<input type="hidden" name="USERID" value="${param.USERID}">
<input type="password" class="TextBox" id="viewAdd_userPassword"
name="USERPASSWORD"
title="密碼長度為8-64個字符,必須包括數字、字母、特殊字符"/>
</td>
</tr>
<tr>
<td align="right" class="FormItemText">
確認密碼:
</td>
<td class="FormItemControl">
<input type="password" class="TextBox" id="viewAdd_userConPassword""/>
</td>
</tr>
</table>
JAVASCRIPT片段
/**
* form表單提交前,密碼校驗
*/
function validatePassword() {
var password = $get('viewAdd_userPassword').value;
// 去掉空格
password = password.replace(/\s/g,"");
if ("" != password) {
// 密碼必須由 8-64位字母、數字、特殊符號組成
var reg = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/]).{8,64}$/;
if (reg.test(password)) {// 驗證通過
// form表單提交前,去除空格
$get('viewAdd_userPassword').value = password;
var password2 = $get('viewAdd_userConPassword').value;
if (password2 != password) {// 密碼不一致
Dialog.Alert("消息提示", "兩次輸入的密碼不一致,請重新輸入!", function (result) {
$get("viewAdd_userPassword").focus();
}, null, 50);
return false;
}
return true;
} else {
Dialog.Alert("消息提示", "密碼長度為8-64個字符,必須包括數字、字母、特殊字符!", function (result) {
$get("viewAdd_userPassword").focus();
}, null, 50);
}
return false;
} else {
Dialog.Alert("消息提示", "請輸入新密碼!", function (result) {
$get("viewAdd_userPassword").focus();
}, null, 50);
}
return false;
}
驗證座機號
var regex = /^(0\d{2}-\d{8})|(0\d{3}-\d{7})$/;
驗證郵箱
var regex = /^([a-z0-9A-Z]+[-|_|\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$/;
