正则表达式验证参数格式时报空指针异常

正则表达式验证参数格式时报空指针异常

总线:jsp中input表单属性设置错误->Servlet接收不到参数->其中定义的字符串对象tel为空->Matcher方法中调用tel的方法->空指针异常

在写注册验证的时候,接收jsp传过来的参数,其中含有邮箱跟手机号,
将这两个字符串验证是否符合格式,利用的是Java正则表达式Pattern和Matcher

这是接收参数的Servlet部分代码,用来接收jsp发过来的四个参数信息

	HttpSession session = request.getSession();
	//姓名
		String username =request.getParameter("username");
	//密码
		String password =request.getParameter("password");
	//邮箱
		String email=request.getParameter("email");
	//电话
		String tel=request.getParameter("tel");	
		

对接收的邮箱跟电话进行验证,看是否符合格式,
如果不符合格式,将错误信息请求转发到jsp中输出


//邮箱
final String pattern1 = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
//手机号
final String pattern2 = "^((13[0-9])|(15[^4])|(18[0-9])|(17[0-9])|(147))\\d{8}$";

		final Pattern pat1 = Pattern.compile(pattern1);
		final Pattern pat2 = Pattern.compile(pattern2);

		final Matcher mat1 = pat1.matcher(email);
		final Matcher mat2 = pat2.matcher(tel);
			if (!mat1.find()) {		
					request.setAttribute("error","邮箱格式错误");
					request.getRequestDispatcher("register.jsp").forward(request, response);
					return;
			}
			
		if (!mat2.find()) {
			request.setAttribute("error","手机号格式错误");
			request.getRequestDispatcher("register.jsp").forward(request, response);
		return;
		}

但是在运行的时候报出了空指针异常

正则表达式验证参数格式时报空指针异常_第1张图片

检查jsp页面中发现,误将手机号的name属性设置为email,
导致,上面的servlet接收不到tel属性,所以定义的字符串类型的tel对象为空。

		
	<input type="text" placeholder="邮箱" name="email" id="email" value="${verifyuser.email}"/>
	<input type="text"placeholder="手机号" name="email" id="tel" value="${verifyuser.tel}"/>

根据异常提示,在这行代码中tel被作为参数传入,内部源码调用tel对象的length()方法。(text就是传入的参数)
因为tel为空,所以调用tel的方法出现空指针异常

	final Matcher mat2 = pat2.matcher(tel);

正则表达式验证参数格式时报空指针异常_第2张图片

你可能感兴趣的:(正则表达式验证参数格式时报空指针异常)