正则表达式 - 基础篇

版权声明:https://blog.csdn.net/Dream_Weave https://blog.csdn.net/Dream_Weave/article/details/83144657
  1. 正则简介
     - 1.使用特殊的符号来做校验,目标是操作字符串。例如:手机号码、邮箱、身份证的校验等。
  2. 使用正则表达式的优缺点
     - 1.使用特殊的符号来做校验,目标是操作字符串。例如:手机号码、邮箱、身份证的校验等。
     - 2.缺点:虽然能简化书写,但是正则表达式的阅读性较差。
  3. 正则表达式语法规则


    Ps1:+号表示前面字符的出现次数必须大于或等于1次(等价于 {1,})。
    Ps2:表示“.”符号时,不能加单斜杠“/",因为点在正则里被使用过,所以加双斜杠“//”。
  4. 前台校验局限性

    Ps:可以通过审查元素将正则代码去掉。
  5. 正则综合运用
    <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>
    			密&nbsp;码:<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>
    			邮&nbsp;箱:<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);
    	}
    }
  6. 待更新...

猜你喜欢

转载自blog.csdn.net/Dream_Weave/article/details/83144657