1.正则简介
- 1.使用特殊的符号来做校验,目标是操作字符串。例如:手机号码、邮箱、身份证的校验等。
2.使用正则表达式的优缺点
- 1.使用特殊的符号来做校验,目标是操作字符串。例如:手机号码、邮箱、身份证的校验等。
- 2.缺点:虽然能简化书写,但是正则表达式的阅读性较差。
3.正则表达式语法规则
Ps1:+号表示前面字符的出现次数必须大于或等于1次(等价于 {1,})。
Ps2:表示“.”符号时,不能加单斜杠“/",因为点在正则里被使用过,所以加双斜杠“//”。
4.前台校验局限性
Ps:可以通过审查元素将正则代码去掉。
5.正则综合运用
<body><formaction="/Rg/servlet/RegisterServlet"method="post"><p>用户名:<inputtype="text"name="username"pattern="[a-zA-Z]{6,12}"required="required"placeholder="请输入6-12位的字母"></p><p>密 码:<inputtype="password"name="password"pattern="[0-9]{6,}"required="required"placeholder="请输入至少6位数字"></p><p>手机号:<inputtype="text"name="phone"pattern="1[3578]\d{9}"required="required"placeholder="请输入手机号"></p><p>邮 箱:<inputtype="email"name="email"placeholder="请输入邮箱"required="required"></p><p><inputtype="submit"value="注册"><inputtype="reset"><inputtype="reset"value="重置"></p></form></body>
packagecn.java.servlet; importjava.io.IOException; importjavax.servlet.ServletException; importjavax.servlet.annotation.WebServlet; importjavax.servlet.http.HttpServlet; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; @WebServlet("/servlet/RegisterServlet") publicclassRegisterServletextendsHttpServlet { protectedvoiddoGet(HttpServletRequestrequest, HttpServletResponseresponse) throwsServletException, IOException { //首先获取参数Stringusername=request.getParameter("username"); Stringpassword=request.getParameter("password"); Stringphone=request.getParameter("phone"); Stringemail=request.getParameter("email"); //对获取的参数信息进行校验// 用户名只能为字母,长度为6-12位:[a-zA-Z]{6,12}StringusernameRegex="[a-zA-Z]{6,12}"; //matches方法的含义是将获取过来的username和usernameRegex这个规则进行比对,如果满足要求则返回true,否则返回falsebooleanflag1=username.matches(usernameRegex); // 密码只能为数字,长度至少为6位:[0-9]{6,},\\d{6}StringpassRegex="[0-9]{6,}"; booleanflag2=password.matches(passRegex); // 手机号校验:[1][3578]\\d{9}StringphoneRegex="[1][3578][0-9]{9}"; booleanflag3=phone.matches(phoneRegex); // 邮箱校验:[a-zA-Z_0-9]{3,}@([a-zA-Z]+|\\d+)(\\.[a-zA-Z]+)+StringemialRegex="[a-zA-Z_0-9]{3,}@([a-zA-Z]+|\\d+)(\\.[a-zA-Z]+)+"; booleanflag4=email.matches(emialRegex); //如果username、password、email、phone同时满足格式要求的话才打印数据,否则提示数据不满足格式要求if(flag1&&flag2&&flag3&&flag4){ //然后打印参数System.out.println("username="+username); System.out.println("password="+password); System.out.println("phone="+phone); System.out.println("email="+email); }else{ System.out.println("亲,您输入的注册信息数据不满足格式要求,请检查仔细后在输入"); } } protectedvoiddoPost(HttpServletRequestrequest, HttpServletResponseresponse) throwsServletException, IOException { doGet(request, response); } }
packagecn.java.test; publicclassRegexTest { publicstaticvoidmain(String[] args){ Stringdata="1";//给定一个非数字Stringregex="\\D";//非数字booleanflag=data.matches(regex); //System.out.println(flag);Stringdata2="abc"; Stringregex2="\\s";//空白字符booleanflag2=data2.matches(regex2); //System.out.println(flag2);Stringdata3=" "; Stringregex3="\\S";//非空白字符booleanflag3=data3.matches(regex3); //System.out.println(flag3);Stringdata4="a"; Stringregex4="\\w";//单词字符[a-zA-Z_0-9]booleanflag4=data4.matches(regex4); //System.out.println(flag4);Stringdata5="%"; Stringregex5="^\\W$";//非单词字符[a-zA-Z_0-9](^、$代表的是正则的起始与结束标记,可以省略不写)booleanflag5=data5.matches(regex5); System.out.println(flag5); } }
6.待更新...