Java正则脱敏
part1+part2實現
Part1
java.util.regex.Pattern的應用
正則表達式的一種已編譯的實現。
正則表達式通常以字符串的形式出現,它首先必須被編譯為Pattern類的一個實例。
結果模型可以用來生成一個Matcher,它(生成的Macher實例)可以匹配根據
這個正則表達式生成的任意字符序列。在實現一個匹配器中的匹配時包括了
任意多的情況,并且多個匹配器可以共享同一個匹配模式。
下面是一個典型的調用次序:
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
為了方便使用,Pattern類也定義了matches()方法,
因為有時候一個正則表達使只用到一次。
在一次調用中,這個方法首先編譯表達式,然后匹配輸入的序列。
下面這個句子:
boolean b = Pattern.matches("a*b", "aaaaab");
等價于上面的三個句子。但是由于它不允許便以后的模式被重用,所以在需要重復匹配
時顯然比上面的方法效率要低。
正則規則:https://www.cnblogs.com/zhaochunhua/p/3569626.html
public static void main(String[] args) {String regex = "^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([\\d|x|X]{1})$";String cardid = "321201199910020459";boolean b = Pattern.matches(regex,cardid);System.out.println(b);}Part2
java如何獲取手機號碼_java中如何提取一個字符串中的電話號碼:
參考:https://blog.csdn.net/weixin_39778106/article/details/114125847
package com.steven.demo.service;import java.util.regex.Matcher; import java.util.regex.Pattern;/*** @author steven* @date 2021/11/26*/ public class testdd {public static void main(String[] args) { //要提前號碼的字符串String str = "n13977777777s18911111111你好15988888888hha0955-7777777sss0775-6678111";//提取手機號碼checkCellphone(str);//提取固定電話號碼checkTelephone(str);}/*** 查詢符合的手機號碼** @param str*/public static void checkCellphone(String str) { // 將給定的正則表達式編譯到模式中Pattern pattern = Pattern.compile("((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8}");// 創建匹配給定輸入與此模式的匹配器。Matcher matcher = pattern.matcher(str);//查找字符串中是否有符合的子字符串while (matcher.find()) { //查找到符合的即輸出System.out.println("查詢到一個符合的手機號碼:" + matcher.group());}}/*** 查詢符合的固定電話** @param str*/public static void checkTelephone(String str) { // 將給定的正則表達式編譯到模式中Pattern pattern = Pattern.compile("(0\\d{2}-\\d{8}(-\\d{1,4})?)|(0\\d{3}-\\d{7,8}(-\\d{1,4})?)");// 創建匹配給定輸入與此模式的匹配器。Matcher matcher = pattern.matcher(str);//查找字符串中是否有符合的子字符串while (matcher.find()) { //查找到符合的即輸出System.out.println("查詢到一個符合的固定號碼:" + matcher.group());}} }?
總結
- 上一篇: ICML2018论文研讨会记录
- 下一篇: Java 实现多线程的四种方式