? ? ? ? 正則表達式,又稱正則式、規則表達式、正規表達式、正則模式或簡稱正則,是一種用來匹配字符串的工具。它是一種字符串模式的表示方法,可以用來檢索、替換和驗證文本。正則表達式是一個字符串,它描述了一些字符的組合,這些字符可以是字母、數字或者其他字符。在正則表達式中,我們可以使用特殊的語法和符號來表示某些字符或字符集合。正則表達式是一種強大且靈活的工具,可以在不同的編程語言和工具中使用,如Java、JavaScript、Python、Perl、PHP等。
1、匹配中文
????????在Java中,可以使用Unicode范圍來匹配中文字符。其中,漢字的Unicode編碼范圍為:[\u4e00-\u9fa5]。?????
下面是一個例子,使用正則表達式判斷一個字符串中是否包含中文字符:
String str = "Hello, 你好!";
String regex = "[\u4e00-\u9fa5]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {System.out.println("包含中文字符");
} else {System.out.println("不包含中文字符");
}
????????輸出結果為:"包含中文字符"。
2、匹配身份證
????????以下是Java中使用正則表達式判斷身份證號的代碼:
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String idCard = "110101199003073197"; // 身份證號碼String regex = "\\d{17}[\\d|x]|\\d{15}"; // 正則表達式if (Pattern.matches(regex, idCard)) {System.out.println("身份證號碼格式正確");} else {System.out.println("身份證號碼格式不正確");}}
}
????????這里使用了Java中的正則表達式類Pattern
,使用matches
方法判斷字符串是否符合正則表達式。正則表達式\\d{17}[\\d|x]|\\d{15}
表示身份證號碼可以是18位(最后一位可能是數字或字母x)或者是15位。其中,\\d
表示匹配數字,x
表示字母x。
3、匹配IP地址
????????要判斷一個字符串是否為IP地址,可以使用Java中的正則表達式。下面是一個示例代碼:
public static boolean isIpAddress(String input) {String pattern = "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$";return input.matches(pattern);
}
????????這個方法接收一個字符串參數,并返回一個布爾值。如果參數字符串滿足IPv4地址格式,返回true;否則返回false。
????????該正則表達式的含義是:以數字開頭,由三個數字和一個點號組成的字符串重復四次。每個數字的范圍為1到3位。點號需要轉義。
例如,以下幾個字符串都是合法的IPv4地址:
- 192.168.0.1
- 10.0.0.1
- 172.16.0.1
而以下字符串不是IPv4地址:
- 192.168.0.1000(其中1000超出了數字范圍)
- 10.0.0.01(前導零無效)
請注意,此方法只能判斷IP地址的格式是否正確,而不能驗證IP地址是否真正存在或是否可達。
4、屏蔽敏感詞匯
????????可以使用 Java 的正則表達式(Regular Expression)來過濾和替換文本中的特定字符或字符串。下面是一個示例代碼,用于屏蔽敏感詞匯:
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegexFilter {public static void main(String[] args) {String text = "你是一只小小鳥,飛呀飛不高,就算風雨無阻也要努力飛,因為你是小小鳥。";String[] sensitiveWords = {"小小鳥", "飛呀飛不高", "努力飛"};String patternString = String.join("|", sensitiveWords); // 構造正則表達式Pattern pattern = Pattern.compile(patternString); // 編譯正則表達式Matcher matcher = pattern.matcher(text); // 匹配文本StringBuffer result = new StringBuffer(); // 用于存儲過濾后的文本while (matcher.find()) {// 將匹配到的敏感詞匯用"*"替換matcher.appendReplacement(result, "*".repeat(matcher.group().length()));}matcher.appendTail(result); // 將剩余文本添加到結果中System.out.println(result); // 輸出結果(敏感詞匯被屏蔽)}
}
在上面的代碼中,可以通過修改 text
變量中的文本和 sensitiveWords
數組中的敏感詞匯來測試不同的情況。另外,也可以調整正則表達式的構造方式和替換方式來實現更復雜的過濾和替換規則。
5、判斷格式化時間
????????在 Java 中,可以使用正則表達式來判斷格式化時間是否符合指定的格式。下面是一個例子:
String regex = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}";
String time = "2021-03-23 12:30:00";
if (time.matches(regex)) {System.out.println("時間格式正確");
} else {System.out.println("時間格式不正確");
}
上面的代碼中,正則表達式 \\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}
表示匹配以四位數字開頭,后面跟著 -
,兩位數字,再后面跟著 -
,兩位數字,再后面跟著空格,兩位數字,再后面跟著 :
,兩位數字,再后面跟著 :
,兩位數字的字符串。如果時間字符串符合這個格式,就會輸出 時間格式正確
,否則輸出 時間格式不正確
。