java_正则使用

正则语法

\d 是一个正字0到9的数字
\d+ 表示+号表示至少要匹配一次  当在java字符串中要"^\\d+$"

* 表示0次或多次匹配  zo*    表示 
      z //o 出现0次   
      zo //o 出现1次
      zoo //o 出现2次        
**:匹配路径中的零个或多个目录
      com/**/config.xml
      com/config.xml  匹配0个路径
      com/feng/spring/config.xml 匹配一或两个路径                               

? 要么不出现要么出现一次
*? 重复任意次,但尽可能少重复
(.?)设置分组用于替换,获取 比如下面代码 获取一个值 (?.*) 来标记一个名字然后通过 matcher.group("start")来取

Matcher matcher = Pattern.compile(".*(?.*?).*")
                .matcher("0000");
if(matcher.matches()){
    System.out.println("group="+matcher.group());
    System.out.println("matcher.group(1)="+matcher.group(1));
    System.out.println("matcher.group(name)="+matcher.group("start"));
    System.out.println("groupCount="+matcher.groupCount());
}
//最后打印结果为
group=0000
matcher.group(1)=0000
matcher.group(name)=0000
groupCount=1

.点是任意字符

正则是否匹配
String pattern="xxx具体的一个正则xxx";
String mobile="xx具体的手机号xx"
boolean isMatch = Pattern.matches(pattern, mobile);

正则获取值
Matcher matcher=Pattern.compile("xxx具体的一个正则xxx").matcher("xx目标字符串xxx");
if(matcher.matches()){//匹配上了
   matcher.group(1);//按顺序来获取值
   matcher.group("xxnamexx");//按名字来获取值
}
while(matcher.find()){//如果多个都匹配上了
 matcher.group("xxnamexx");//按名字来获取值
}

正则使用

@Test
	public void PatternTest() {
		String mobile = "15011xxx22";
		String pattern = "^(?=\\d{11}$)^1(?:3\\d|4[57]|5[^4\\D]|66|7[^249\\D]|8\\d|9[89])\\d{8}$";
		boolean isMatch = Pattern.matches(pattern, mobile);
		System.out.println("这个手机号为"+isMatch);
								   
	}

常用正则手机号判断

String pattern = "^(?=\\d{11}$)^1(?:3\\d|4[57]|5[^4\\D]|66|7[^249\\D]|8\\d|9[89])\\d{8}$";   详见打开链接

你可能感兴趣的:(java_正则使用)