SyString reg="^[a-zA-z]+";
System.out.println(startCheck(reg,"abcccc"));stem.out.printl^n(RegUtils(reg,"a")); //true
System.out.println(RegUtils(reg,"b")); //true
表示匹配一个a或者b,和
[ab]
[a]|[b]
效果一样
2)() 捕获组的符号
如果我们不仅要匹配我们想要查找的符号,而且还要将匹配的符号去除,那么我们就需要用到这个符号
Pattern pattern = Pattern.compile(reg);
Matcher m = pattern.matcher("a12121212ABCDEF");
System.out.println(m.find()?m.group(1):"nothing");
System.out.println(m.find()?m.group(2):"nothing");
结果:
12121212
nothing
好像每次matcher比较只能取出一次.??
3. ^ 从头匹配,$ 匹配到尾部
String reg="^[\\d]+[a-z][\\d]+$";
System.out.println(RegUtils(reg,"121a11"));
注意颜色的对应.
^[\\d]+ 表示从头匹配多次的数组
[a-z] 表示匹配a-z之间的一个符号
[\\d]+$ 表示匹配尾部多次的数组符号
4 . . 匹配任意一个符号
String reg="^[\\d].+";
System.out.println(RegUtils(reg,"121a1@#$@@%@%@%@1"));
结果:
true
^[\\d]+ 表示匹配多次的数组
.+ 表示匹配多次的任意字符
5. [abcd] 匹配由abcd四种字符组成的字串
String reg="^[abcd]+";
System.out.println(RegUtils(reg,"abcccc"));
结果:
true
在这里的[abcd] 表示可以匹配其中的任意一个字符,+则表示匹配多次,
^ 则表示从头开始匹配,这样就可以匹配由abcd四种字符组成的字串了.
[^abc] 匹配除了a,b,c之外的任意字符
String reg="^[^abcd]+";
System.out.println(RegUtils(reg,"ahjkl"));
结果:
false
^ 表示相反的意思,也就是说,不带符号的时候表示匹配任意字符,带了这个符号表示
不匹配包含这个符号的任意字符.
[a-zA-z] 表示匹配a-z或者A-Z中的任意一个符号(并集)
String reg="^[a-zA-z]+";
System.out.println(RegUtils(reg,"abcccc"));
表示匹配大小写字母.
[a-b[x-z]] 表示a-b和x-z的并集合
String reg="^[a-b[x-z]]+";
System.out.println(RegUtils(reg,"abcccc")); //false
System.out.println(RegUtils(reg,"abxz")); //true
[a-z&&[def]] 表示a,b,c中的任意一个 (交集)
相当于数学中的[a,z]的区间,与[d,f] 区间的交集
String reg="^[a-z&&[def]]+";
System.out.println(RegUtils(reg,"ab")); //false
System.out.println(RegUtils(reg,"def")); //true
* 0次或者多次
+ 1次或者多次
? 0次或者1次
{n} 恰好n次
{n,m} 至少n次,之多m次
? 匹配0次或者1次
String reg="^[\\d]?[a-z\\d]$";
System.out.println(RegUtils(reg,"1a")); //true
System.out.println(RegUtils(reg,"a")); //true
System.out.println(RegUtils(reg,"12345a")); //false
红色部分表示^[\\d]? 匹配的方式,也就是说如果多出了一个就会匹配失败.
{n,m} 案例:
String reg="^[\\d]{2,5}";
System.out.println(RegUtils(reg,"1234567"));
System.out.println(RegUtils(reg,"12345"));
这里表示的是从开始匹配数组2~5位数,也就是最多匹配5个符号,最少匹配2个符号.超过获取这数组位数不够都会在成匹配
失败.
在匹配手机号码中经常使用.
例如:匹配以1开始的11为手机号码: "^[1][\\d]{11}"
实用的案例:
匹配汉字:"^[\u4e00-\u9fa5]+"
Email地址:"[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+"。
InternetURL:"^http://([\\w-]+\.)+[\\w-]+(/[\\w-./?%&=]*)?$"。
电话号码:"^(\\(\\d{3,4}-)|\\d{3.4}-)?\\d{7,8}$" 正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
身份证号(15位或18位数字):"^\\d{15}|\\d{18}$"。
一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。
一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。