1. 程式人生 > >表單驗證時常用正則表示式(以“註冊資訊”為例)

表單驗證時常用正則表示式(以“註冊資訊”為例)

個人在使用時看到網上總結的有很多了,但大多文章表述的都比較抽象,使用時需要自己組合,通常因為懶所以實際在用時習慣直接拿來用,總結的是本人寫程式的過程中用的頻率比較高的幾個例項:

另:這裡有一個博主總結的很不錯,連結貼上

/*驗證是否同意協議*/
function checkAgree() {
<span style="white-space:pre">	</span>document.MyForm.subm.disabled = !document.MyForm.isAgree.checked;
}
/* 驗證使用者名稱 */
function checkUsername() {
	var reg = /^\D\w{4,9}$/ig;/* 不能以數字開頭,長度在5-10位 */
	var id = "uname";
	return commonInfo(reg, id);
}

/* 驗證密碼 */
function checkPassword() {
	var reg = /^\d{6}$/ig;/* 必須是數字,位數為6位 */
	var id = "upwd";
	return commonInfo(reg, id);
}
/* 驗證真實姓名 */
function checkTruename() {
	var reg = /^[\u4e00-\u9fa5]{2,4}$/ig;/* 必須是2-4位的漢字 */
	var id = "tname";
	return commonInfo(reg, id);
}
/*驗證出生日期*/
function checkBirth(){
	var reg=/^(19\d{2})|((200\d)-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1]))|((201[0-6])-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1]))$/ig;
	var id="birthday";
	return commonInfo(reg, id);
}
/*驗證身份證*/
function checkBirth(){
	var reg=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
	var id="birthday";
	return commonInfo(reg, id);
}
/* 驗證電子郵箱 */
function checkEmail() {
<span style="white-space:pre">	</span>/* 字母數字下劃線[a0_] + (0-N個".a0_") + @ + a0_ + (1-2組由2-3個a0_組成的字元,如com.cn或com) */
<span style="white-space:pre">	</span>var reg = /^(\w)+(\.\w)*@(\w)+(\.\w{2,3}){1,2}$/ig;
	var id = "email";
	return commonInfo(reg, id);
}


</pre><pre>
/* 驗證手機號 */
function checkPhone() {
	var reg = /^1[35789]\d{9}$/ig;/* 這個比較簡單,不說了 */
	var id = "phone";
	return commonInfo(reg, id);
}

/* 提取公共的文字類表單項驗證 */
function commonInfo(reg, id) {
	var inputText = document.getElementById(id);
	var inputValue = inputText.value;
	var inputAlt = inputText.alt;
	var inputSpan = document.getElementById(id + "Span");

	if (inputValue == null || inputValue.length == 0) {
		inputSpan.innerHTML = inputAlt + "不能為空!";
		inputSpan.style.color = "red";
		inputSpan.style.background="none";
		return false;
	} else {
		if (!reg.test(inputValue)) {
			inputSpan.innerHTML = inputAlt + "格式有誤!";
			inputSpan.style.color = "red";
			inputSpan.style.background="none";
			return false;
		} else {
			inputSpan.innerHTML = "√";
			inputSpan.style.color = "white";
			inputSpan.style.background="rgb(50,200,100)";
			inputSpan.style.padding="2px 4px";
			inputSpan.style.borderRadius="15px";
			return true;
		}
	}
}

其中還有check驗證碼,獲取驗證碼,提交按鈕是否可用的判斷,兩次密碼輸入一致的判斷,跟在後面,但是跟主題無關了,可以跳過;

附:其餘表單功能補充:

/* 獲得驗證碼 */
function getCode() {
	var code = parseInt(Math.random() * 9000 + 1000);
	var span = document.getElementById("getCode");
	span.innerHTML = code;
	span.style.fontSize = "18px";
	span.style.padding = "3px 6px";
	span.style.color = "red";
	span.style.textDecoration= "line-through";
	span.style.cursor = "pointer";
	span.style.border = "1px #000 solid";
}

/* 校驗驗證碼 */
function checkCode() {
	var code = document.getElementById("getCode").innerHTML;
	var inputCode = document.getElementById("checkcode").value;
	var inputSpan = document.getElementById("codeSpan");
	if (inputCode == null || inputCode.length == 0) {
		inputSpan.innerHTML = "驗證碼不能為空!";
		inputSpan.style.color = "red";
		return false;
	} else {
		if (inputCode != code) {
			inputSpan.innerHTML = "驗證碼輸入錯誤!";
			inputSpan.style.color = "red";
			return false;
		} else {
			inputSpan.innerHTML = "OK!";
			inputSpan.style.color = "green";
			return true;
		}
	}
}

/* 驗證愛好的選擇 */
function checkHobby() {
	var choice = document.getElementsByName("hobby");/* 注意這裡只能通過name值獲得,因為id是為唯一的 */
	var Hspan = document.getElementById("hobbySpan");
	var count = 0;
	for (var i = 0; i < choice.length; i++) {
		if (choice[i].checked) {
			count++;
		}
	}
	if (count >= 2) {
		Hspan.innerHTML = "OK!";
		Hspan.style.color = "green";
		return true;
	} else {
		Hspan.innerHTML = "至少選擇兩項!";
		Hspan.style.color = "red";
		return false;
	}
}

/* 驗證兩次密碼是否一致 */
function checkSame() {
	var reg = /^\d{6}$/ig;/* 必須是數字,位數為6位 */
	var inputText = document.getElementById("confirmPassword");
	var inputValue = inputText.value;
	var inputAlt = inputText.alt;
	var inputSpan = document.getElementById("confirmPasswordSpan");
	var first = document.getElementById("eu_password").value;
	if (inputValue == null || inputValue.length == 0) {
		inputSpan.innerHTML = inputAlt + "不能為空!";
		inputSpan.style.color = "red";
		return false;
	} else {
		if (!reg.test(inputValue)) {
			inputSpan.innerHTML = inputAlt + "格式有誤!";
			inputSpan.style.color = "red";
			inputSpan.style.background="none";
			return false;
		} else {
			if (first == inputValue) {
				inputSpan.innerHTML = "√";
				inputSpan.style.color = "white";
				inputSpan.style.background="rgb(50,200,100)";
				inputSpan.style.padding="2px 4px";
				inputSpan.style.borderRadius="15px";
				return true;
			} else {
				inputSpan.innerHTML = "兩次密碼輸入不一致";
				inputSpan.style.color = "red";
				inputSpan.style.background="none";
				return false;
			}
		}
	}
}

/* 驗證是否可以提交 */
function checkSubmit() {
	return checkCode() && checkUsername() && checkedPassword() && checkSame()
			&& checkedTruename() && checkHobby() && checkedEmail()
			&& checkedPhone();
}

以下為html程式碼:

<body onload="getCode();">
		<form action="javascript:alert('提交成功!')" method="get" name="MyForm" onsubmit="return checkSubmit();">
		用 戶 名:
			<input type="text" name="uname" id="uname" alt="使用者名稱" onblur="checkUsername();"/>
			<span id="unameSpan"></span><br />
		輸入密碼:
			<input type="password" name="upwd" id="upwd" alt="密碼" onblur="checkPassword();"/>
			<span id="upwdSpan"></span><br />
		確認密碼:
			<input type="password" name="qrpwd" id="qrpwd" alt="密碼" onblur="checkSame();"/>
			<span id="qrpwdSpan"></span><br />
		真實姓名:
			<input type="text" name="tname" id="tname" alt="真實姓名" onblur="checkTruename();"/>
			<span id="tnameSpan"></span><br />
		電子郵箱:
			<input type="text" name="email" id="email" alt="電子郵箱" onblur="checkEmail();"/>
			<span id="emailSpan"></span><br />
		手機號碼:
			<input type="text" name="phone" id="phone" alt="手機號" onblur="checkPhone();"/>
			<span id="phoneSpan"></span><br />
		愛好:<br />
			<input type="checkbox" name="hobby" onclick="checkHobby();"/>音樂
			<input type="checkbox" name="hobby" onclick="checkHobby();"/>電影
			<input type="checkbox" name="hobby" onclick="checkHobby();"/>籃球<br />
			<input type="checkbox" name="hobby" onclick="checkHobby();"/>美術
			<input type="checkbox" name="hobby" onclick="checkHobby();"/>唱歌
			<input type="checkbox" name="hobby" onclick="checkHobby();"/>跳舞
			<span id="hobbySpan"></span><br />
			
		驗證碼:
			<input type="text" name="checkcode" id="checkcode" alt="驗證碼" size="4" onblur="checkCode();"/>
			<span id="getCode" title="點選更換驗證碼" onclick="getCode();"></span>
			<span id="codeSpan"></span><br />
		
			<input type="checkbox" name="isAgree" id="isAgree" onclick="checkAgree();"/>是否同意協議<br />

			<input type="submit" name="subm" id="subm" value="提交" disabled="disabled"/>
		</form>
	</body>