Java有一个方法可以实现正则表达式的匹配,如下:
Pattern.matches(regex,str)
其中regex为匹配的规则,str为待匹配的字符串。
/**
* @description:正则表达式匹配查找测试
* @author: teasir
* @create: 2021/12/16
**/
public class PatternTest {
public static void main(String[] args) {
List<String> lists=new ArrayList<>();
lists.add("+862-13135825643");
lists.add("1657245634@qq.com");
//定义正则表达式匹配规则,*表示可以匹配多个字符串
String regex=".*"+".+862-13135825642"+".*";
System.out.println(regex);
for (String str:lists){
System.out.println(str);
if(Pattern.matches(regex,str)){
System.out.println("匹配成功:"+str);
}
}
}
}
输出:
.*.+862-13135825642.*
+862-13135825642
匹配成功+862-13135825642
1657245614@qq.com
上面加“.”是为了将"*"、"+"等在正则表达式中有特殊含义的字符区分开来。
否则会报如下错误:
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
查询相关的资料显示,+、*、|、\等符号在正则表达示中有相应的不同意义。
一般来讲只需要在前面加"."即可。
参考文章
https://blog.csdn.net/qq_33522040/article/details/86006960
https://www.nhooo.com/note/qa0ui8.html