正則表達式(regular expression)

//正則表達式(regular expression)
/*
split
matches
replaceAll
*/
/**
* 是一種驗證規則,用來判斷字符串是否符合某種特定格式:
* 
* 手機號/郵箱......
*/
/*
 * 常見的正則的規則:
 * [0-9]:用來匹配一個數字   簡寫方式:\d
 * [a-z]:用來匹配一個小寫英文字母
 * [A-Z]:用來匹配一個大寫英文字母
 * [\u4e00-\u952f]用來匹配一個漢字
 * [135]1或3或5
 * [1ab]1或a或b
 * [0-9a-zA-Z]匹配數字+大小寫英文
 * [0-9a-zA-Z_] 單詞字符簡寫方式:\w
 * 
 * 
 * 
 * 原始字符串.matches(正則)
 * 返回boolean型,表示原始字符串與正則表達式是否匹配
 * 
 * [^0-9]   用來匹配一個非數字   簡寫方式:\D
 * [^a-z]   除了a-z 以外其他字符    
 * [^a-zA-Z0-9_]非單詞字符       簡寫方式:\W
 * 空白字符 空格  \t  簡寫方式:\s
 * 
 * 
 * 量詞:
 * {m,n}    m表示最少出現的次數,n表示說最多出現的次數
 * {k}      恰好出現k次
 * {m,}     最少出現m次
 * {,n}     最多出現n次
 * {0,}     出現0到無窮次 簡寫方式:*
 * {1,}     出現1到無窮次 簡寫方式:+
 * {0,1}    可以出現1次或不出現  簡寫方式:?
 * 
 * 
 * 正則表達式:
 * . :正則的小數點:表示匹配任意一個字符    真正的小數點:\.
 * 
 * 驗證郵箱地址:[email protected]
 * \w+@\w+\.\w+     //郵箱地址簡單寫法,後面改進
 */

public class TestRegular {
    public static void main(String[] args) {

        /*
         * 原始字符串進行拆分:
         * 原始字符串.split("正則")
         * 
         * 根據正則表達式,將原始字符串按正則表達式進行拆分
         * 
         * 例:"aaa.bbb.ccc.ddd".split(",");  
         * ==>返回字符串數組String[]{"aaa","bbb","ccc","ddd"}
         * 
         * 
         * 
         */
        System.out.println("a".matches("[0-9]"));//false
        System.out.println("1".matches("[0-9]"));//true
        //正則表達式中的  \  在java中需要寫爲    \\
        System.out.println("1".matches("\\d"));//注意java轉義字符//\true
        System.out.println("2".matches("[135]"));//false
        System.out.println("吃".matches("[\u4e00-\u952f]"));//漢字不需要\\,\\u即可
        System.out.println("嚴".matches("[\u4e00-\u4e0f]"));
        //驗證單詞字符
        System.out.println("@".matches("[\\w]"));//false
        System.out.println("_".matches("[\\w]"));//true
        //驗證取反
        System.out.println("2".matches("[^0-9]"));
        System.out.println("a".matches("[^0-9]"));
        //空白字符
        System.out.println(" ".matches("\\s"));
        System.out.println("\t".matches("\\s"));

        //{m,n}量詞
        System.out.println("123456".matches("[0-9]{11,11}"));
        System.out.println("123456".matches("[0-9]{11}"));
        System.out.println("13812345678".matches("[0-9]{11,11}"));


        //驗證郵箱
        System.out.println("aaaa3333@cc".matches("\\w+@\\w+\\.\\w+"));
        System.out.println("[email protected]".matches("\\w+@\\w+\\.\\w+"));

        //abc   出現1到多次
        //()叫做分組,把括號內的內容作爲一個整體來看待
        String str1 = "abcabcabc";
        str1.matches("abc+");
        System.out.println(str1.matches("abc+"));//錯誤的正則,+隻影響到c
        System.out.println(str1.matches("(abc)+"));//正確


        //abc 或 def 出現1到多次,| 代表組內或者關係
        System.out.println("defdef".matches("(abc|def)+"));
    }
}
發佈了40 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章