- 正则简介
- 1.使用特殊的符号来做校验,目标是操作字符串。例如:手机号码、邮箱、身份证的校验等。 - 使用正则表达式的优缺点
- 1.使用特殊的符号来做校验,目标是操作字符串。例如:手机号码、邮箱、身份证的校验等。
- 2.缺点:虽然能简化书写,但是正则表达式的阅读性较差。 - 正则表达式语法规则
Ps1:+号表示前面字符的出现次数必须大于或等于1次(等价于 {1,})。
Ps2:表示“.”符号时,不能加单斜杠“/",因为点在正则里被使用过,所以加双斜杠“//”。 - 前台校验局限性
Ps:可以通过审查元素将正则代码去掉。 - 正则综合运用
<body> <form action="/Rg/servlet/RegisterServlet" method="post"> <p> 用户名:<input type="text" name="username" pattern="[a-zA-Z]{6,12}" required="required" placeholder="请输入6-12位的字母"> </p> <p> 密 码:<input type="password" name="password" pattern="[0-9]{6,}" required="required" placeholder="请输入至少6位数字"> </p> <p> 手机号:<input type="text" name="phone" pattern="1[3578]\d{9}" required="required" placeholder="请输入手机号"> </p> <p> 邮 箱:<input type="email" name="email" placeholder="请输入邮箱" required="required"> </p> <p> <input type="submit" value="注册"> <input type="reset"> <input type= "reset" value="重置" > </p> </form> </body>
package cn.java.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/servlet/RegisterServlet") public class RegisterServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //首先获取参数 String username = request.getParameter("username"); String password = request.getParameter("password"); String phone = request.getParameter("phone"); String email = request.getParameter("email"); //对获取的参数信息进行校验 // 用户名只能为字母,长度为6-12位:[a-zA-Z]{6,12} String usernameRegex = "[a-zA-Z]{6,12}"; //matches方法的含义是将获取过来的username和usernameRegex这个规则进行比对,如果满足要求则返回true,否则返回false boolean flag1 = username.matches(usernameRegex); // 密码只能为数字,长度至少为6位:[0-9]{6,},\\d{6} String passRegex = "[0-9]{6,}"; boolean flag2 = password.matches(passRegex); // 手机号校验:[1][3578]\\d{9} String phoneRegex ="[1][3578][0-9]{9}"; boolean flag3 = phone.matches(phoneRegex); // 邮箱校验:[a-zA-Z_0-9]{3,}@([a-zA-Z]+|\\d+)(\\.[a-zA-Z]+)+ String emialRegex ="[a-zA-Z_0-9]{3,}@([a-zA-Z]+|\\d+)(\\.[a-zA-Z]+)+"; boolean flag4 = 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("亲,您输入的注册信息数据不满足格式要求,请检查仔细后在输入"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
package cn.java.test; public class RegexTest { public static void main(String[] args){ String data ="1";//给定一个非数字 String regex ="\\D";//非数字 boolean flag = data.matches(regex); //System.out.println(flag); String data2 = "abc"; String regex2 = "\\s";//空白字符 boolean flag2 = data2.matches(regex2); //System.out.println(flag2); String data3 = " "; String regex3 = "\\S";//非空白字符 boolean flag3 = data3.matches(regex3); //System.out.println(flag3); String data4 = "a"; String regex4 = "\\w";//单词字符[a-zA-Z_0-9] boolean flag4 = data4.matches(regex4); //System.out.println(flag4); String data5 = "%"; String regex5 = "^\\W$";//非单词字符[a-zA-Z_0-9](^、$代表的是正则的起始与结束标记,可以省略不写) boolean flag5 = data5.matches(regex5); System.out.println(flag5); } }
- 待更新...