概念
- 正規表達式即正确的規則,是指一個用來描述或者比對一系列符合某個句法規則的字元串的單個字元串。
原始方法校驗
- 需求:校驗QQ号碼
- 要求必須是 5-15位 數字
- 0 不能開頭
import java.util.Scanner;
//使用原始的做法完成校驗QQ号碼
public class RefexDemo {
public static void main (String[] args) {
//擷取鍵盤錄入的QQ号碼
Scanner sc = new Scanner(System.in);
//友情提示
System.out.println("請輸入QQ号碼:");
String qqStr = sc.nextLine();
boolean flag = checkQQ(qqStr);
}
private static boolean checkQQ(String qqStr){
//定義一個變量用來記錄校驗的結果
boolean flag = flase;
int length = qqStr.length();
if(length >= && length <= ){
//滿足長度
//判斷是否滿足不以0開頭
char firstChar = qqStr.charAt();
if(firstChar == '0'){
//說明是以0開頭,就不滿足條件
flag = false;
}else {
//不以0開頭
//再去判斷是不是數組
for (int i = ; i < length; i++) {
char ch = qqStr.charAt(i);
if(ch >= '0' && ch <='9') {
flag = true;
// continue;
}else {
flag = false;
break;
}
}
}
}else{
//不滿足長度
flag = false;
}
}
}
使用正規表達式校驗
private static boolean checkQQByRegex(String QQStr){
String regex = "[0-9] [1-9] {4-14}";
}
作用
- 可以簡化我們的開發
- 不僅Java可以用,C、C++或者js、php都支援正規表達式
組成規則
- 規則字元在javautil.regex Pattern中
字元
- x 字元 x。舉例:’a’表示字元a
- \\ 反斜線字元。
- \n 新行(換行)符 (‘\u000A’)
- \r 回車符 (‘\u000D’)
字元類
- [abc] a、b 或 c(簡單類)
- [^abc] 任何字元,除了 a、b 或 c(否定)
- [a-zA-Z] a到 z 或 A到 Z,兩頭的字母包括在内(範圍)
- [0-9] 0到9的字元都包括在内
預定義字元類
- . 任何字元。我的就是.字元本身,怎麼表示呢? .
- \d 數字:[0-9]
- \w 單詞字元:[a-zA-Z_0-9]
邊界比對器
- ^ 行的開頭
- $ 行的結尾
- \b 單詞邊界
- 就是不是單詞字元的地方。
- 舉例:hello world?haha;xixi
- Greedy 數量詞
- X? X,一次或一次也沒有
- X* X,零次或多次
- X+ X,一次或多次
- X{n} X,恰好 n 次
- X{n,} X,至少 n 次
- X{n,m} X,至少 n 次,但是不超過 m 次
正規表達式的判斷功能
public boolean matches(String regex)
Demo1
Demo2
正規表達式的分割功能
public boolean matches(String regex)
- 分割以下字元串:
- 年齡範圍”18-24”
- “ab cd ef”
- “ab cd ef”
- “ab cd-ef”
- “ab.cd.ef”
- “E://study//day01//a.txt”
給定字元串中的數字排序
- 需求:有如下一個字元串:”91 27 46 38 50”,請寫代碼實作最終輸出結果是:”27 38 46 50 91”
正規表達式的替換功能
- String類的功能:public String replaceAll ( String regex , String replacement )