Java高级(正则表达式)【Day8】

目标
    回顾 Java 面向对象编程思想
 回顾集合排序
 了解 JDK 新特性
 掌握 String 字符串处理中的超级武器--正则表达式
 掌握常用的日期处理
 
1、回顾 Java 面向对象编程思想
 面向对象编程,就是在编程的时候把程序看成现实中的
事物,通过类把这类事物公共的属性、功能描述出来。
    创建完成单独的事物个体后,通过分析实体与实体之间
的关系,来描述多个事物配合在一起完成一个任务。
   
 类;
 对象;
 消息传递;
 
 class 房子{
  形状 立方体;
  外观 外墙;
  门窗 ;
  承重;
  
  住宅(){}
  商业办公室(){}
  商场(){}
  仓库(){}
 }
 

2、回顾集合排序
   (1)集合中存储多个对象,能够对所存储的对象进行各种排序
   (2)让对象自己知道如何排序
   (3)让第三个人来进行排序
  
3、了解 JDK 新特性
    (1)自动装箱、拆箱
   原始数据类型可以自动转换为包装类型。
    int i =10;    i.===> 包装类包装成对象
    Integer it = new Integer(i);  it.方法()
    (2)泛型
    模仿数组的特点,让集合中存放数据前,明确存放的
数据类型,编译器能够自动的识别,存入、取出
      类型名称<类型> 变量名
   List<Student> list  = new ArrayList<Student>();
   Map<String,Student> mp = new HashMap<String,Student>();
  
 
 (3)新的 for 循环
    与泛型配套使用,还有迭代器也是
    List<Student> list  = new ArrayList<Student>();
    //for(Object obj :list){}
    for(Student stu:list){
   stu.getName();
    }
   
    <c:forEach items="list" var="stu"></c:forEach>
 
 (4)变长参数
public Country(String name, int goldNumber, int silverNumber){}
public Country(String name, int goldNumber, int silverNumber...){} 
 
 (5)静态方法导入
 import static 包名.类名.属性名;


4、掌握 String 字符串处理中的超级武器--正则表达式
   String 代表字符串的类,能够对字符串进行搜索、截取
、大小写转换等操作。
  
   String s = "hello";
   s.split(正则表达式);
   s.charAt(index);//找到指定索引所在位置的字符
   s.indexOf("")//找到指定字符串的位置索引
   s.subString(beginIndex,endIndex) //指定长度截取字符串
    boolean matches(String regex)
          告知此字符串是否匹配给定的正则表达式。
  
  
   输出一个字符串中所有的大写字母、小写字母、数字的个数
"helloJavaILikeIt37729aadfa2323sdf";
  
   正则表达式规则--使用符号代表一定意义的字符串:
   预定义字符类
 .    任何字符(与行结束符可能匹配也可能不匹配)
 /d   数字:[0-9]
 /D   非数字: [^0-9]
 /s   空白字符:[ /t/n/x0B/f/r]
 /S   非空白字符:[^/s]
 /w   单词字符:[a-zA-Z_0-9]
 /W   非单词字符:[^/w]

 符号规则
 []   代表一个字符,但是里面可以指定该字符可能出现的值
         [a,4,d,f]
         查找名称拼音中以 liu 开头的人  "[l,L][i][u]*"
   [0-9]  从 0 到9
 {}   代表一个范围,从该范围中找一个满足条件的字符
   {1} 代表只有一个
   {1,} 代表至少有一个
   {1,3} 代表有 1-3 个
 *    代表多个字符,重复 0 到 多次
    +    代表多个字符,重复 1 到多次
    ?    代表字符,重复 0 或 1 次 
 
 ^    如果在"[^a-z]" 一个字符,肯定不是小写,相反范围
      如果在"^h.*"  代表以 h 开头的字符串,代表一个字符串的开头
 $    如果在"^h*l$" 代表以 h 开头,以 l 结尾的字符串
 &&
 
 
  
  
   "[0-9]"  从 0 到9 中找一个数字
   "
//d{11}"  11 个数字组成的字符
  
  
 
   用 Java 操作正则表达式使用到 的类
   如:病人去医院检查身体(病人、医生、机器)
   java.lang.String         病人
   java.util.regex.Pattern  机器
   java.util.regex.Matcher  医生
  
 
5、掌握常用的日期处理

 

 

 

 

 

 

1。^/d+$  //匹配非负整数(正整数 + 0)
2。^[0-9]*[1-9][0-9]*$  //匹配正整数
3。^((-/d+)|(0+))$  //匹配非正整数(负整数 + 0)
4。^-[0-9]*[1-9][0-9]*$  //匹配负整数
5。^-?/d+$    //匹配整数
6。^/d+(/./d+)?$  //匹配非负浮点数(正浮点数 + 0)
7。^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$  //匹配正浮点数
8。^((-/d+(/./d+)?)|(0+(/.0+)?))$  //匹配非正浮点数(负浮点数 + 0)
9。^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$  //匹配负浮点数
10。^(-?/d+)(/./d+)?$  //匹配浮点数
11。^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
12。^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
13。^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
14。^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
15。^/w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
16。^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$    //匹配email地址
17。^[a-zA-z]+://匹配(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?$  //匹配url
18。匹配中文字符的正则表达式: [/u4e00-/u9fa5]
19。匹配双字节字符(包括汉字在内):[^/x00-/xff]
20。应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
String.prototype.len=function(){return this.replace([^/x00-/xff]/g,"aa").length;}
21。匹配空行的正则表达式:/n[/s| ]*/r
22。匹配HTML标记的正则表达式:/<(.*)>.*<///1>|<(.*) //>/
23。匹配首尾空格的正则表达式:(^/s*)|(/s*$)

* 正则表达式用例
  * 1、^/S+[a-z A-Z]$ 不能为空 不能有空格  只能是英文字母
  * 2、/S{6,}         不能为空 六位以上
  * 3、^/d+$          不能有空格 不能非数字
  * 4、(.*)(/.jpg|/.bmp)$ 只能是jpg和bmp格式
  * 5、^/d{4}/-/d{1,2}-/d{1,2}$ 只能是2004-10-22格式
  * 6、^0$            至少选一项
  * 7、^0{2,}$        至少选两项
  * 8、^[/s|/S]{20,}$ 不能为空 二十字以上
  * 9、^/+?[a-z0-9](([-+.]|[_]+)?[a-z0-9]+)*@([a-z0-9]+(/.|/-))+[a-z]{2,6}$邮件
  * 10、/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*([,;]/s*/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*)* 输入多个地址用逗号或空格分隔邮件
  * 11、^(/([0-9]+/))?[0-9]{7,8}$电话号码7位或8位或前面有区号例如(022)87341628
  * 12、^[a-z A-Z 0-9 _]+@[a-z A-Z 0-9 _]+(/.[a-z A-Z 0-9 _]+)+(/,[a-z A-Z 0-9 _]+@[a-z A-Z 0-9 _]+(/.[a-z A-Z 0-9 _]+)+)*$
  *     只能是字母、数字、下划线;必须有@和.同时格式要规范 邮件
  * 13 ^/w+@/w+(/./w+)+(/,/w+@/w+(/./w+)+)*$上面表达式也可以写成这样子,更精练。
    14   ^/w+((-/w+)|(/./w+))*/@/w+((/.|-)/w+)*/./w+$ [/size]

 -------------------------------

要更加准确的匹配手机号码只匹配11位数字是不够的,
比如说就没有以144开始的号码段,

 

故先要整清楚现在已经开放了多少个号码段,国家号码段
分配如下:

 

移动:134、135、136、137、138、139、150、151、152、
      157(TD)、158、159、187、188
联通:130、131、132、155、156、185、186
电信:133、153、180、189、(1349卫通)

详见:[url=http://blog.myspace.cn/e/405268924.htm]http://blog.myspace.cn/e/405268924.htm[/url] 那么现在就可以正则匹配测试了,

 

Java代码 
import java.io.IOException;  
import java.util.regex.Matcher;  
import java.util.regex.Pattern;  
 
public class ClassPathResource {  
    public static boolean isMobileNO(String mobiles){     
        Pattern p = Pattern.compile("^((13[0-9])|(15[^4,//D])|(18[0,5-9]))//d{8}$");     
        Matcher m = p.matcher(mobiles);     
        System.out.println(m.matches()+"---");     
        return m.matches();     
    }     
    public static void main(String[] args) throws IOException {     
        System.out.println(ClassPathResource.isMobileNO("18616155153"));     
    }  

 

 


5、 

你可能感兴趣的:(Java高级(正则表达式)【Day8】)