我是活雷锋

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
package Test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
* 邮箱:@前面包含5-14位数字,字母下划线,@后面是qq,126,163,yahoo,gmail,sina,然后是com或者cn。
* 电话号码:11位数字,开头两位是13,15,16,17,18,19
* 身份证18位:5开头;第7、8位19或者20;第11位0或者1;第13位0或1或2或3;第18位可能为x
* 域名:www开头,然后是个“.”,后面是数字或者字母或者下划线(不限长度),然后是“.”,com或者cn或者com.cn。
*/
public class Test1 {
public static void main(String[] args) {
Pattern p1 = Pattern.compile("^\\w{5,14}@(qq|126|163|yahoo|gmail|sina)\\.(com|cn)$");
Matcher m1 = p1.matcher("gebi_laowang2016@sina.cn");
System.out.println(m1.matches());

Pattern p2 = Pattern.compile("^1(3|4|5|6|7|8)\\d{9}$");
Matcher m2 = p2.matcher("15623479501");
System.out.println(m2.matches());

Pattern p3 = Pattern.compile("^5\\d{5}(19|20)\\d{2}(0|1)\\d(0|1|2|3)\\d{4}(X|[0-9])$");
Matcher m3 = p3.matcher("54614719281231468X");
System.out.println(m3.matches());

Pattern p4 = Pattern.compile("^(WWW|www)\\.\\w{1,}\\.(com|cn|com.cn)$");
Matcher m4 = p4.matcher("www.dgjfgkhkg345476.com.cn");
System.out.println(m4.matches());	
}
}

  

1、  “.”  “+”  “?”  “*”  等的匹配,在前面加  “\\”

2、 身份证里面日期的匹配有个小问题,比如 19900228,当月份为02时,日期不能超过28,其他月份也有类似限制,这在正则表达式里面有没有快捷的解决方案(除了逐月写出外)?

posted on 2016-12-31 23:10  我是活雷锋  阅读(103)  评论(0编辑  收藏  举报