注册的正则校验要如何实现?

注册的正则校验要如何实现?

开始想到的是提交表单后servlet正则校验,但是视频似乎是在用户输入的时候就已经能判断符不符合要求了,如何能做到?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,在老师的演示过程中,在密码和确认密码使用js做了校验,在确认密码中使用失去焦点事件,当失去焦点时调用js函数完成密码和确认密码是否相同。可参考这个问答:https://class.imooc.com/course/qadetail/99055

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 老师我把我这一部分的代码贴上来了,您能帮我看看有没有什么问题吗?
    2019-03-15 15:32:17
提问者 爱动脑筋的小伙伴 2019-03-15 15:30:35
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String path=request.getContextPath();
	String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<center>
		<h1>用户注册</h1>
		<form action="<%=basePath %>/RegistServlet" method="post">
			<table width="400px" cellspacing="0px" cellpadding="0px" border="1px">
				<tr>
					<td>用户名</td>
					<td><input type="text" name="username" pattern="\\w{3,12}" required="required" placeholder="用户名为3-12位字母数字或下划线组合"  onblur="checkUsername(this)"></td>
				</tr>
				<tr>
					<td>密&nbsp;码</td>
					<td><input type="password" name="password" pattern="\\d{6,12}" placeholder="密码长度为6-12位的纯数字"  id="password" onblur="checkPassword(this)"></td>
				</tr>
				<tr>
					<td>确认密码</td>
					<td><input type="password" name="checkPWD" pattern="\\d{6,12}" placeholder="密码长度为6-12位的纯数字"  onblur="checkRePassword(this)"></td>
				</tr>
				<tr>
					<td>手机号码</td>
					<td><input type="text" name="phone" pattern="[1][3578]\\d{9}" placeholder="请输入正确的手机号码格式" onblur="checkPhone(this)"></td>
				</tr>
				<tr>
					<td>邮箱</td>
					<td><input type="email" name="email" pattern="[a-zA-Z_0-9]{3,}@([a-zA-Z]+|\\d+)(\\.[a-zA-Z]+)+" placeholder="请输入正确邮箱格式" required="required" onblur="checkEmail(this)"></td>
				</tr>
				<tr>
					<td colspan="2" style="text-align:center">
						<input type="submit" value="注册">
						<input type="reset" value="重置">
					</td>
				</tr>
			</table>
		</form>
	</center>
	<script type="text/javascript">
	 //用户名:  
    var  usernameRegex = /^\w{3,12}$/;  
    //密码:  
    var passwordRegex = /^\d{6,12}$/;  
    //邮箱:  
    var emailRegex = /^[a-zA-Z_0-9]{3,}@([a-zA-Z]+|\\d+)(\\.[a-zA-Z]+)+$/;  
    //手机号码
    var phoneRegex= /^[1][3578]\\d{9}$/;
   
      
    //alert("222");  
    function validateForm(){ //定义validateForm方法用于客户端校验  
        var flag = true;  
        //校验用户名  
        var usernameNode = byName("username"); //获得ID值为username的节点对象  
        var username = usernameNode.value;   //获得usernameNode节点的值,即用户在username文本框内填写的值  
        if(!usernameRegex.test(username)){    //验证获得到的值是否符合正则表达式   
           alert("用户名格式不正确");
        }  
          
        //校验密码  
        var passwordNode = byName("password");  //获得ID值为password的节点对象  
        var password = passwordNode.value;  
        if(!passwordRegex.test(password)){  
           alert("密码格式不正确");
        }  
          
        //确认密码  
        var rePasswordNode = byName("checkPWD");  //获得ID值为rePassword的节点对象  
        var rePassword = rePasswordNode.value;  
        if(!password==rePassword){  
            alert("密码不一致");
        }
          
        //校验邮箱  
        var emailNode = byName("email");  //获得ID值为Email的节点对象  
        var email = emailNode.value;  
        if(!emailRegex.test(email)){  
         	alert("邮箱格式不正确");
                    }  

        
    
          
    function byName(name){  //自定义方法,用于获取传递过来的ID值对应的节点对象  
        return document.getElementByTagName(name);  
    }  
          
    function checkUsername(node){ //当鼠标离开节点时调用此方法,验证节点内容是否符合注册规范  
        //校验用户名  
        var username = node.value;  //得到传递过来的节点对象的值  
        if(!usernameRegex.test(username)){  //验证是否符合节点对应的正则表达式  
        	 alert("用户名格式不正确");
        }
    }  
      
    function checkPassword(node){  //当鼠标离开节点时调用此方法,验证节点内容是否符合注册规范  
        //校验密码  
        var password1 = node.value;  
        //alert("111");  
        if (!passwordRegex.test(password)) {  
        	  alert("密码格式不正确");  
        }  
       
    }     
          
    function checkRePassword(node){  //当鼠标离开节点时调用此方法,验证节点内容是否符合注册规范  
        //确认密码                
        var rePassword = node.value;  
        var password = byName("password").value;  
        //alert(repassword+"***"+password);           
        if(password!=rePassword){                    
        	alert("密码不一致");
        }
    }    
   
    function checkPhone(node){  //当鼠标离开节点时调用此方法,验证节点内容是否符合注册规范  
        //确认密码                
        var phone = node.value;  
        //alert(repassword+"***"+password);           
        if(!phoneRegex.test(phone)){                    
        	alert("电话格式不正确");
        }
    }    
    
    function checkEmail(node){  //当鼠标离开节点时调用此方法,验证节点内容是否符合注册规范  
        //校验邮箱  
        var email = node.value;  
        if(!emailRegex.test(email)){  
        	alert("邮箱格式不正确"); 
        }
    }
    
	</script>
</body>
</html>

找了一个相关的例子改写了一下,没有成功

提问者 爱动脑筋的小伙伴 2019-03-15 13:12:01

前端加pattern 和required,后台再整体校验一次么?

  • 但加了pattern后哪怕我当场输入错误并没什么提示信息
    2019-03-15 14:01:32
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10204    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师