javascript表單正則應(yīng)用
以下是之前練習(xí)正則表達(dá)式時(shí)候做的js表單測(cè)試.
input里的value用.test()比較以后,處理正則和需求,反饋,代碼欠優(yōu)化,但功能完善,僅供參考學(xué)習(xí)
html部分
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>新用戶注冊(cè)</title> <link rel="stylesheet" href="./css/regForm.css" type="text/css"> <script type="text/javascript" src="js/regForm.js"></script> <!--外部樣式和JS*--> </head> <body> <div id="section"> <form action="" method="get" id="form"> <table id="table"> <tr> <td>用戶名</td> <td><input id="username" type="text" class="text"></td> <td><div class="icon" id="usernameicon"></div></td> </tr> <tr> <td>Email</td> <td><input type="text" class="text" id="email"></td> <td><div class="icon" id="emailicon">(請(qǐng)輸入正確的Email地址)</div></td> </tr> <tr> <td>密碼</td> <td><input type="password" id="password"></td> <td><div id="pwicon" class="icon">(請(qǐng)輸入強(qiáng)度較高的密碼)</div></td> </tr> <tr> <td>密碼強(qiáng)度</td> <td> <div class="pwstrength" id="low">弱</div> <div class="pwstrength" id="middle">中</div> <div class="pwstrength" id="strong">強(qiáng)</div> </td> <td></td> </tr> <tr> <td>確認(rèn)密碼</td> <td><input id="cfpw" type="password" class="text" value=""></td> <td><div class="icon" id="cfpwicon"></div></td> </tr> <tr> <td>MSN</td> <td><input id="msn" type="text" class="text"> </td> <td><div class="icon" id="msnicon"></div></td> </tr> <tr> <td>QQ</td> <td><input type="text" class="text" id="qq"> </td> <td><div id="qqicon" class="icon">(請(qǐng)輸入正確的QQ號(hào)碼)</div></td> </tr> <tr> <td>辦公電話</td> <td><input id="offphone" type="text" class="text"></td> <td><div class="icon" id="offphoneicon"></div></td> </tr> <tr> <td>家庭電話</td> <td><input id="homephone" type="text" class="text"> </td> <td><div class="icon" id="homephoneicon"></div></td> </tr> <tr> <td>手機(jī)</td> <td ><input type="text" class="text" id="phone"></td> <td><div class="icon" id="phoneicon">(請(qǐng)輸入正確的手機(jī)號(hào))</div></td> </tr> <tr> <td>密碼提示問(wèn)題</td> <td> <select class="text" name="question" value=""> <option value="" selected>請(qǐng)選擇密碼提示問(wèn)題</option> <option value="">你熱愛(ài)編程嗎?</option> <option value="">你的中學(xué)名字是?</option> <option value="">最開(kāi)心的事是什么?</option> </select> </td> <td></td> </tr> <tr> <td>密碼問(wèn)題答案</td> <td><input id="answer" type="text" class="text"></td> <td><div class="icon" id="answericon"></div></td> </tr> <tr> <td></td> <td class="lasttext"><input type="radio">我已看過(guò)并接受《<a href="">用戶協(xié)議</a>》</td> <td></td> </tr> <tr> <td></td> <td><input type="image" src="image/login.png" id="login"></td> <td></td> </tr> </table> </form> </div> </body> </html>
css部分>>
body{ background:url("../image/10.png") repeat-x; } #section{ width:1002px; height:612px; margin:15px auto; position:relative; } #table{ width:600px; height:550px; background-color:#fff; position:absolute; font-size:18px; line-height:5px; border-radius: 5px; box-shadow: 0 0 15px 2px rgba(0, 0, 0, 0.4); padding: 20px 30px; box-sizing: border-box; width: 80%; margin: 0 10%; } #table .pwstrength{ float:left; height:30px; width:60px; line-height:30px; text-align:center; border-radius:4px; color:#000; } #table .text{ width:215px; height:32px; } #password{ width:215px; height:32px; } #table .lasttext{ font-size:14px; } #table tr td{ width:180px; } #table .icon{ width:175px; height:24px; float:left; background:no-repeat; font-size:12px; color:#000; text-align:right; line-height:24px; }
javascript部分,這邊使用的是dom2級(jí)操作,先封裝好事件對(duì)象,在IE和非IE的情況下進(jìn)行操作
//封裝一下兼容性函數(shù) var EV ={ //綁定事件兼容 addEvent:function(node,ename,fn){ if(navigator.userAgent.toLowerCase().indexOf("ie")!=-1){ //在ie下添加綁定事件 node.attachEvent("on"+ename,fn); }else{ node.addEventListener(ename,fn,false); } }, removeEvent:function(node,ename,fn){ if(navigator.userAgent.toLowerCase().indexOf("ie")!=-1){ //在ie下添加綁定事件 node.detachEvent("on"+ename,fn); }else{ node.removeEventListener(ename,fn,false); } } } window.onload=function(){ //email地址檢測(cè) html事件處理 var eMail = document.getElementById("email"); EV.addEvent(eMail,"blur",checkEmail); function checkEmail(){ var email = document.getElementById("email").value; var emailicon = document.getElementById("emailicon"); var epatt = new RegExp("\\w+@[a-zA-Z0-9]+\\.[a-zA-Z0-9]{2,14}"); //利用正則表達(dá)式 if(epatt.test(email)){ emailicon.style.backgroundImage="url('image/tick.png')"; emailicon.innerHTML=""; } else{ emailicon.style.backgroundImage="url('image/cross.png')"; emailicon.innerHTML="請(qǐng)輸入正確的郵箱地址!"; emailicon.style.color="#dd0000"; } } //密碼強(qiáng)度檢測(cè) var pwd =document.getElementById("password"); EV.addEvent(pwd,"blur",checkCode); function checkCode(){ var pwdv =document.getElementById("password").value; var low =document.getElementById("low"); var middle =document.getElementById("middle"); var strong =document.getElementById("strong"); var pwssicon =document.getElementById("phoneicon"); var pwdpatt1 = /\d+/g; //數(shù)字 var pwdpatt2 = /[a-zA-Z]+/g; //字母 var pwdpatt3 = /(\W)+/g; //特殊字符 var booldata1,booldata2,booldata3; if(pwdv.length<6){ pwicon.style.backgroundImage="url('image/cross.png')"; pwicon.innerHTML="密碼不得少于6位數(shù)!"; pwicon.style.color="#dd0000"; } if(pwdv==""){ pwicon.style.backgroundImage="url('image/cross.png')"; pwicon.innerHTML="密碼項(xiàng)不能為空!"; pwicon.style.color="#dd0000"; } if(pwdpatt1.test(pwdv)){ booldata1 = true; } if(pwdpatt2.test(pwdv)){ booldata2 = true; } if(pwdpatt3.test(pwdv)){ booldata3 = true; } if(booldata1||booldata2||booldata3){ low.style.backgroundColor="#CB4042"; pwicon.style.backgroundImage="url('image/tick.png')"; pwicon.innerHTML=""; } //強(qiáng)度低 if((booldata1&&booldata2)||(booldata1&&booldata3)||(booldata3&&booldata2)){ middle.style.backgroundColor="#F7C242"; pwicon.style.backgroundImage="url('image/tick.png')"; pwicon.innerHTML=""; //強(qiáng)度中 } if(booldata1&&booldata2&&booldata3){ strong.style.backgroundColor="#227D51"; pwicon.style.backgroundImage="url('image/tick.png')"; pwicon.innerHTML=""; //強(qiáng)度強(qiáng) } } //檢測(cè)QQ號(hào)碼 var qq =document.getElementById("qq"); EV.addEvent(qq,"blur",checkQQ); function checkQQ(){ var qqicon =document.getElementById("qqicon"); var qqtext =document.getElementById("qq").value; var qqpatt = /^[1-9](\d{5,10})$/; if(qqpatt.test(qqtext)){ qqicon.style.backgroundImage="url('image/tick.png')"; qqicon.innerHTML=""; } else{ qqicon.style.backgroundImage="url('image/cross.png')"; qqicon.innerHTML="請(qǐng)輸入5至11位數(shù)的QQ號(hào)碼"; qqicon.style.color="#dd0000"; } } //檢測(cè)手機(jī)號(hào) var phone = document.getElementById("phone"); EV.addEvent(phone,"blur",checkPhone); function checkPhone(){ var phoneicon =document.getElementById("phoneicon"); var phonenum = document.getElementById("phone").value; var phonepatt = /^0?(13|15|14|18)[0-9]{9}$/; if(phonepatt.test(phonenum)){ phoneicon.style.backgroundImage="url('image/tick.png')"; phoneicon.innerHTML=""; } else{ phoneicon.style.backgroundImage="url('image/cross.png')"; phoneicon.innerHTML="請(qǐng)輸入正確的手機(jī)號(hào)!"; phoneicon.style.color="#dd0000"; } } //檢測(cè)用戶名 var username = document.getElementById("username"); EV.addEvent(username,"blur",checkUser); function checkUser(){ var usercon = document.getElementById("username").value; var usernameicon =document.getElementById("usernameicon"); var unpatt = /[A-Za-z0-9_\-\u4e00-\u9fa5]{6,18}/; if(unpatt.test(usercon)){ usernameicon.style.backgroundImage="url('image/tick.png')"; usernameicon.innerHTML=""; } else{ usernameicon.style.backgroundImage="url('image/cross.png')"; usernameicon.innerHTML="用戶名至少大于6個(gè)字符!"; usernameicon.style.color="#dd0000"; if(usercon==""){ usernameicon.style.backgroundImage="url('image/cross.png')"; usernameicon.innerHTML="用戶名不能為空!"; usernameicon.style.color="#dd0000"; } } //確認(rèn)密碼 var Cfpw =document.getElementById("cfpw"); EV.addEvent(Cfpw,"blur",cfPw); function cfPw(){ var cfpw =document.getElementById("cfpw").value; var cfpwicon=document.getElementById("cfpwicon"); var pwd =document.getElementById("password").value; if(cfpw==pwd&&cfpw!=""){ cfpwicon.style.backgroundImage="url('image/tick.png')"; cfpwicon.innerHTML=""; }else{ cfpwicon.style.backgroundImage="url('image/cross.png')"; cfpwicon.innerHTML="輸入的密碼不一致!"; cfpwicon.style.color="#dd0000"; } } //MSN var Msn = document.getElementById("msn"); EV.addEvent(Msn,"blur",checkMsn); function checkMsn(){ var msn =document.getElementById("msn").value; var msnicon =document.getElementById("msnicon"); var msnpatt = /\w+@[a-zA-Z0-9]+\.[a-zA-Z0-9]{2,14}/; if(msnpatt.test(msn)){ msnicon.style.backgroundImage="url('image/tick.png')"; msnicon.innerHTML=""; }else{ msnicon.style.backgroundImage="url('image/cross.png')"; msnicon.innerHTML="msn應(yīng)為正確郵箱地址!"; msnicon.style.color="#dd0000"; } } //辦公電話 var officephone =document.getElementById("offphone"); EV.addEvent(officephone,"blur",checkoffPhone); function checkoffPhone(){ var offphone = document.getElementById("offphone").value; var offphoneicon =document.getElementById("offphoneicon"); var offpatt = /(\(\d{3,4}\)|\d{3,4}-)?\d{8}/; if(offpatt.test(offphone)){ offphoneicon.style.backgroundImage="url('image/tick.png')"; offphonecon.innerHTML=""; }else{ offphoneicon.style.backgroundImage="url('image/cross.png')"; offphoneicon.innerHTML="例:010-88888888"; offphoneicon.style.color="#dd0000"; } } //家庭電話 var Homephone =document.getElementById("homephone"); EV.addEvent(Homephone,"blur",checkHomephone); function checkHomephone(){ var homephone =document.getElementById("homephone").value; var homephoneicon =document.getElementById("homephoneicon"); var homepatt = /(\(\d{3,4}\)|\d{3,4}-)?\d{8}/; if(homepatt.test(homephone)){ homephoneicon.style.backgroundImage="url('image/tick.png')"; homephonecon.innerHTML=""; }else{ homephoneicon.style.backgroundImage="url('image/cross.png')"; homephoneicon.innerHTML="例:010-88888888"; homephoneicon.style.color="#dd0000"; } } //問(wèn)題答案 function checkAnswer(){ var answer =document.getElementById("answer").value; var answericon =document.getElementById("answericon"); if(answer!=""){ answericon.style.backgroundImage="url('image/tick.png')"; answercon.innerHTML=""; }else{ answericon.style.backgroundImage="url('image/cross.png')"; answericon.innerHTML="密碼問(wèn)題答案不能為空!"; answericon.style.color="#dd0000"; } } //登錄注冊(cè) var login =document.getElementById("login"); EV.addEvent(login,"click",Login); function Login(){ var form =document.getElementById("form"); if(username.value==""){ alert("用戶名不能為空!"); this.value.focus(); return false; } if(password.value==""){ alert("密碼不能為空!"); this.value.focus(); return false; } if(email.value==""){ alert("email不能為空!"); this.value.focus(); return false; } else{ var info =confirm("信息填寫(xiě)完整,確定注冊(cè)嗎?"); if(info==true){ window.open("http://www.eduasksz.com","_blank"); } } } } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JS 正則表達(dá)式中小括號(hào)的應(yīng)用
- JS應(yīng)用正則表達(dá)式轉(zhuǎn)換大小寫(xiě)示例
- JavaScript 正則表達(dá)式之RegExp屬性、方法及應(yīng)用分析
- JavaScript中正則表達(dá)式的概念與應(yīng)用
- js replace正則表達(dá)式應(yīng)用案例講解
- JScript中正則表達(dá)函數(shù)的說(shuō)明與應(yīng)用
- JavaScript正則表達(dá)式校驗(yàn)與遞歸函數(shù)實(shí)際應(yīng)用實(shí)例解析
- javascript中正則表達(dá)式反向引用示例介紹
- JavaScript正則表達(dá)式之后向引用實(shí)例代碼
- 詳解JavaScript正則表達(dá)式之分組匹配及反向引用
- AS3 js正則表達(dá)式 反向引用(backreference)
- JavaScript 正則應(yīng)用詳解【模式、欲查、反向引用等】
相關(guān)文章
JavaScript中String和StringBuffer的速度之爭(zhēng)
很多Javascript書(shū)籍中都是類比于Java說(shuō)String在頻繁的和大量的字符串連接方面的效率是不如StringBuffer的。2010-04-04JS數(shù)組reduce你不得不知道的25個(gè)高級(jí)用法
reduce作為ES5新增的常規(guī)數(shù)組方法之一,對(duì)比f(wàn)orEach 、filter和map,在實(shí)際使用上好像有些被忽略,下面這篇文章主要給大家介紹了關(guān)于JS數(shù)組reduce你不得不知道的25個(gè)高級(jí)用法,需要的朋友可以參考下2021-06-06微信小程序的開(kāi)發(fā)范式BeautyWe.js入門詳解
這篇文章主要介紹了微信小程序的開(kāi)發(fā)范式BeautyWe.js詳解,它是一套專注于微信小程序的企業(yè)級(jí)開(kāi)發(fā)范式,它的愿景是:讓企業(yè)級(jí)的微信小程序項(xiàng)目中的代碼,更加簡(jiǎn)單、漂亮,需要的朋友可以參考下2019-07-07