package cn.reg;
import java.util.Arrays;
import org.junit.Test;
public class TestReg {
/**
* 测试matches 方法 及 普通字符使用
*/
@Test
public void test1(){
String reg1 = "[xyz]";
String reg2 = "[a-z&&[^aef]]";
/*
* matches(regex):字符串的匹配 正则方法 ,是全匹配方法 regex参数是正则表达式字符串
*/
System.out.println("y".matches(reg1));//true
System.out.println("a".matches(reg2));//false
//需求:要求匹配一个数字字符,数字字符只能是3、4、6、7、8、9
String reg3 = "[346789]";//[0-9&&[^0125]]
}
/**
* 元字符
*
*/
@Test
public void test2(){
String reg1 = "\\d";// 0-9
String reg2 = "\\D";// 除0-9
String reg3 = "\\w";// a-zA-Z0-9_
String reg4 = ".";
System.out.println("1".matches(reg1));//true
System.out.println("1".matches(reg2));//false
System.out.println("_".matches(reg3));//true
System.out.println("A".matches(reg3));//true
System.out.println(" ".matches(reg4));//true
}
/**
* 数字元字符
*
* 匹配邮编
* 6位数字
*/
@Test
public void test3(){
String reg1 = "[\\d][\\d][\\d][\\d][\\d][\\d]";//不使用数字元字符
String reg2 = "[\\d]{6}";
System.out.println("510000".matches(reg1));//true
System.out.println("510000".matches(reg2));//true
//案例: 匹配年龄 百:1-2 十:0-9 个:0-9
String reg3 = "[1-2]?[\\d][\\d]";
}
/**
* 转义字符
* 匹配 : +0086
*/
@Test
public void test4(){
String reg1 = "\\+[\\d]{4}";
System.out.println("+0086".matches(reg1));
}
/**
* 分组
*
* 匹配:整数或者小数 整数位 1-9 + 小数位 \. 0-9 +
* 0
*/
@Test
public void test5(){
String reg = "([1-9][0-9]*|0)(\\.[0-9]+)?";
System.out.println("1050.0".matches(reg));
System.out.println("11".matches(reg));
System.out.println("0.6".matches(reg));
}
/**
* ^:表示匹配开头
* $:表示匹配结尾
* ^$结合表示必须完全匹配
* 检测用户名或密码是否合法,第一个字符必须是英文,可以包含大小写英文、下划线、0-9数字,长度为6~16位
*
* [a-zA-Z][\\w]{5,15}
*
*/
@Test
public void test6(){
String reg = "[a-zA-Z][\\w]{5,15}";
String name = "a1234567890123456789";
String[] split = name.split(reg);
System.out.println(Arrays.toString(split));
String reg2 = "^[a-zA-Z][\\w]{5,15}$";
String[] split2 = name.split(reg2);
System.out.println(Arrays.toString(split2));
System.out.println(name.matches(reg));//false
System.out.println(name.matches(reg2));//false
}
}