1. 程式人生 > >正則表示式 - 基礎篇

正則表示式 - 基礎篇

  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. 待更新...