1.不用new方式定义字符==相等但是是在常量池地址相同
2.正则表达式一个中括号就是一个值,里面放几个就是进行匹配的
3.{}大括号代表前面中括号的次数,就是有几个
4.使用正则表达式的好处
不用正则表达式判断手机源码:
public class Regex1 { public static void main(String[] args) { /** * 手机号格式:<br> * 159xxx 13xxx 18xxx 17xxx<br> * 1、必须为11位的纯数字<br> * 2、第1个字符必须是1<br> * 3、第2个字符必须是3、5、7、8 */ Scanner input = new Scanner(System.in); System.out.print("请输入一个手机号码:"); String phone = input.next(); // 1.计算字符串的长度 int len = phone.length(); if (len == 11) {// 满足长度11位 // 2、将字符串转化成字符数组 char[] chs = phone.toCharArray(); // 3、判断第1个字符是否是1 if (chs[0] == '1') {// 满足第1个字符是1 // 4、判断第2个字符是否是3/5/7/8 if (chs[1] == '3' || chs[1] == '5' || chs[1] == '7' || chs[1] == '8') { // 5、判断手机号码后9位是否是数字 boolean flag = true;// 手机号码11位都是数字 for (int i = 0; i < chs.length; i++) { if (!('0' <= chs[i] && chs[i] <= '9')) {// 当前不是数字 flag = false; break; } } if (flag) { System.out.println("亲,手机号码格式正确!!!"); } else { System.out.println("亲,手机号码必须全部为数字"); } } else { System.out.println("亲,你手机号码有误(第2个字母不正确)"); } } else { System.out.println("亲,您输入的手机号码有误(第1个字符必须为1)"); } } else { System.out.println("亲,您输入的手机号码长度有误!"); } } }
可以看出上面逻辑较为复杂,但是每个错误很清晰,但是正则也就只能判断正误.
5.{}大括号可以传两个参数代表上下线也就是5-12位
6.* + ?在正则表达式的作用
7.可以使用或进行选择
优化语句
8.正则表达式有预定义的字符
9.正则表达式的定义及使用
10.正则表达式遇到点的切割
11.正则表达式遇到空格的切割
12.正则表达式切割时稳定形式
说明不论什么符号切割加上\\不会出现一些特殊情况,也是一种经验吧.