正则表达式 : 定义了字符串的匹配模式
*
* 可以用来搜索,编辑或处理文本,并不仅限于某一种语言,但是每种语言中有细微的差别
*
* JDK1.4 推出的 java.util.regex 包,很好的支持了正则表达式
*
* 常用语法 :
*
* \ 转移符 , 把有意义字符转换为无意义字符
* 但是java中 \ 也是转移符,所以在java中编写正则表达式的时候,需要转移符的时候需要些 两个 \\
*
* 字符取值范围相关
* [abc] : 表示 可能是a, 也可能是b, 也可能是c (是abc中的任意一个)
* [^abc] : 表示不是a,b,c中的任何一个
* [a-zA-Z] : 表示是大小写字母 , [a-z] 小写字母 , [A-Z] 大写字母 [0-9] 数字0-9
* [a-zA-Z0-9] : 表示是数字或字母
*
* 简洁表示
* . : 匹配任意字符
* \d : 表示数字 等同于[0-9]
* \D : 表示非数字 等同于 [^0-9]
* \s : 表示由空字符组成, [\t\n\r\x\f]
* \S : 表示非空字符组成
* \w : 表示由字母数字下划线组成 [a-zA-Z0-9_]
* \W : 表示非字母数字下划线 [^a-zA-Z0-9_]
*
* 表示数量的
* ? : 表示出现0次或1次
* + : 表示1次或多次, 大于等于1
* * : 任意次数(0~N)
* {n} : 表示出现n次 , {2} 表示出现2次
* {n,m} : 表示出现n次到m次 , {2,5} : 表示出现2~5次
* {n,} : 表示出现n及以上 >=n
*
* () : 把他们看做一个整体
*// 可以使用() 对匹配到的数据进行分组, 第一个() 就是第一组,第二个() 就是第二组
// 也可以不分组,如果不分组的情况下做数据提取,就只能提取到整个匹配到的字符串
// 分组之后 可以提取对应组的数据
// ((.{2,3})电话号码是) 第一组
// (.{2,3}) 第二组
// (\\d{11}) 第三组
* | 或 , a|b ,a和b都可以匹配
*
* ^ : 以什么什么打头 , 但是 用在[^xxxx] 就表示取反
* $ : 以什么什么结尾
* ^a[^a-z] , a1 , aA , a3, 22
*
* 校验非汉字
* [^\u4e00-\u9fa5]
*
* Pattern : 创建正则表达式对象,能做一些基本的简单操作
*
* 三大功能 :
* 验证 : boolean matchers(String regex);
* 拆分 : String[] split(String regex);
* 替换 : String replaceAll(String regex,String replacement);
* 实际操作中,有时候我们嫌麻烦,也可以直接使用String里面的一些方法,比如 替换,拆分,验证String类中也有的
String regex = "";(双引号内放入验证条件)
String str = "";(双引号内放入需要验证的字符串)
//创建正则表达式
//引擎
Pattern pattern = Pattern.compile(regex);
//匹配器
Matcher matcher = pattern = pattern.matcher(str);
//三种匹配模式
//matches:全词匹配 XXX
//find:任意位置均可 .*XXX.*
//lookingAt :从前到后 XXX.*
// 全词匹配 , 等于写着 ^ 和 $
System.out.print(matcher.matches());
//注意 : 一个匹配器对象(matcher) ,调用相同的方法可以连用,不建议混用
matcher = pattern.matcher(tel);
// 只要最前面的是符合条件的 就行
System.out.println(matcher.lookingAt());
matcher = pattern.matcher(tel);
// 任意位置符合条件 就行
System.out.println(matcher.find());