正則表示式 - 基礎篇
阿新 • • 發佈:2018-11-10
- 正則簡介
- 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); } }
- 待更新...