一个通用的Java正则匹配工具

一个通用且常用的Java正则匹配工具,用以检查邮箱名、电话号码、用户密>码、邮政编码等合法性。

验证Email

  • @param email email地址,格式:zhang@gmail.com,zhang@xxx.com.cn,xxx代表邮件服务商
  • @return 验证成功返回true,验证失败返回false 验证身份证号码
  • @param idCard 居民身份证号码15位或18位,最后一位可能是数字或字母
  • @return 验证成功返回true,验证失败返回false 验证手机号码 *@param mobile 移动、联通、电信运营商的号码段
  • 移动的号段:134(0-8)、135、136、137、138、139、147(预计用于TD上网卡)
  • 、150、151、152、157(TD专用)、158、159、187(未启用)、188(TD专用)
  • 联通的号段:130、131、132、155、156(世界风专用)、185(未启用)、186(3g)
  • 电信的号段:133、153、180(未启用)、189
  • @return 验证成功返回true,验证失败返回false

验证固定电话号码

  • @param phone 电话号码,格式:国家(地区)电话代码 + 区号(城市代码) + 电话号码,如:+8602085588447
  • 国家(地区) 代码 :标识电话号码的国家(地区)的标准国家(地区)代码。它包含从 0 到 9 的一位或多位数字,
  • 数字之后是空格分隔的国家(地区)代码。
  • 区号(城市代码):这可能包含一个或多个从 0 到 9 的数字,地区或城市代码放在圆括号——
  • 对不使用地区或城市代码的国家(地区),则省略该组件。
  • 电话号码:这包含从 0 到 9 的一个或多个数字
  • @return 验证成功返回true,验证失败返回false

验证整数(正整数和负整数)

  • @param digit 一位或多位0-9之间的整数
  • @return 验证成功返回true,验证失败返回false

验证整数和浮点数(正负整数和正负浮点数)

  • @param decimals 一位或多位0-9之间的浮点数,如:1.23,233.30
  • @return 验证成功返回true,验证失败返回false

验证空白字符

  • @param blankSpace 空白字符,包括:空格、\t、\n、\r、\f、\x0B
  • @return 验证成功返回true,验证失败返回false

验证中文

  • @param chinese 中文字符
  • @return 验证成功返回true,验证失败返回false

验证日期(年月日)

  • @param birthday 日期,格式:1992-09-03,或1992.09.03
  • @return 验证成功返回true,验证失败返回false

验证URL地址

  • @param url 格式:http://blog.csdn.net:80/xyang81/article/details/7705960? 或 http://www.csdn.net:80
  • @return 验证成功返回true,验证失败返回false

获取网址 URL 的一级域名

  • http://detail.tmall.com/item.htm?spm=a230r.1.10.44.1xpDSH&id=15453106243&_u=f4ve1uq1092 ->> tmall.com
  • @param url 匹配中国邮政编码
  • @param postcode 邮政编码
  • @return 验证成功返回true,验证失败返回false

匹配IP地址

*(简单匹配,格式,如:192.168.1.1,127.0.0.1,没有匹配IP段的大小)

验证Email

    public static boolean checkEmail(String email) {   
        String regex = "\\w+@\\w+\\.[a-z]+(\\.[a-z]+)?";   
        return Pattern.matches(regex, email);   
    }

验证身份证号码

    public static boolean checkIdCard(String idCard)   
    {   
        String regex = "[1-9]\\d{13,16}[a-zA-Z0-9]{1}";   
        return Pattern.matches(regex,idCard);   
    }

*验证手机号码

    public static boolean checkMobile(String mobile) {   
        String regex = "(\\+\\d+)?1[3458]\\d{9}$";   
        return Pattern.matches(regex,mobile);   
    }

*验证固定电话号码

    public static boolean checkPhone(String phone) {   
        String regex = "(\\+\\d+)?(\\d{3,4}\\-?)?\\d{7,8}$";   
        return Pattern.matches(regex, phone);   
    }

*验证整数(正整数和负整数)

    public static boolean checkDigit(String digit) {   
        String regex = "\\-?[1-9]\\d+";   
        return Pattern.matches(regex,digit);   
    }

*验证整数和浮点数(正负整数和正负浮点数)

    public static boolean checkDecimals(String decimals) {   
        String regex = "\\-?[1-9]\\d+(\\.\\d+)?";   
        return Pattern.matches(regex,decimals);   
    }

*验证空白字符

    public static boolean checkBlankSpace(String blankSpace) {   
        String regex = "\\s+";   
        return Pattern.matches(regex,blankSpace);   
    }

*验证中文

    public static boolean checkChinese(String chinese) {   
        String regex = "^[\u4E00-\u9FA5]+$";   
        return Pattern.matches(regex,chinese);   
    }

*验证日期(年月日)

    public static boolean checkBirthday(String birthday) {   
        String regex = "[1-9]{4}([-./])\\d{1,2}\\1\\d{1,2}";   
        return Pattern.matches(regex,birthday);   
    }

*验证URL地址

    public static boolean checkURL(String url) {   
        String regex = "(https?://(w{3}\\.)?)?\\w+\\.\\w+(\\.[a-zA-Z]+)*(:\\d{1,5})?(/\\w*)*(\\??(.+=.*)?(&.+=.*)?)?";   
        return Pattern.matches(regex, url);   
    }

*获取网址 URL 的一级域名

    public static String getDomain(String url) {  
          Pattern p = Pattern.compile("(?<=http://|\\.)[^.]*?\\.(com|cn|net|org|biz|info|cc|tv)", Pattern.CASE_INSENSITIVE);  
          // 获取完整的域名  
          // Pattern p=Pattern.compile("[^//]*?\\.(com|cn|net|org|biz|info|cc|tv)", Pattern.CASE_INSENSITIVE);  
          Matcher matcher = p.matcher(url);  
          matcher.find();  
          return matcher.group();  
    }

*匹配中国邮政编码

    public static boolean checkPostcode(String postcode) {   
        String regex = "[1-9]\\d{5}";   
        return Pattern.matches(regex, postcode);   
    }

*匹配IP地址(简单匹配,格式,如:192.168.1.1,127.0.0.1,没有匹配IP段的大小)

    public static boolean checkIpAddress(String ipAddress) {   
        String regex = "[1-9](\\d{1,2})?\\.(0|([1-9](\\d{1,2})?))\\.(0|([1-9](\\d{1,2})?))\\.(0|([1-9](\\d{1,2})?))";   
        return Pattern.matches(regex, ipAddress);   
    }

*是否包含 . 号

    public static boolean checkContainsDot(String username) {   
         return   username.contains(".");  
    }

*是否包含连词符

    public static boolean checkContainsHyphen(String username) {   
         return   username.contains("-");  
    }

*密码长度 6-20

    public static boolean checkUserPasswordLength(String pwd) {   
         return   pwd.length() > 5 && pwd.length() <21;  
    }

*匹配用户名

    public static boolean isValidUserName(String un)   
    {   
         String regex = "([A-Z0-9a-z-]|[\\u4e00-\\u9fa5])+";  
         return Pattern.matches(regex, un);   
    }  
  }

原文发布于微信公众号 - 代码GG之家(code_gg_home)

原文发表时间:2016-07-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏屈定‘s Blog

设计模式--组合模式的思考

组合模式是一种抽象树形结构的模式,其在业务开发中也是一种很有用的设计模式,下面开始分析.

45730
来自专栏Golang语言社区

论golang是世界上最好的语言

概述 golang is a better C and a simple C++ golang主要特性 1、语法简单 舍弃语法糖,严格控制关键字 C++语法糖之...

42990
来自专栏每周一脱topic

Effictive python学习总结连载(1)

python从读研开始就在用了,拿来做过web后台、安全分析、爬虫、测试框架等等,挺强大的。最近借放假和看书和整理的机会,系统的总结下。主要是2方面:一个是书或...

22620
来自专栏从流域到海域

《笨办法学Python》 第44课手记

《笨办法学Python》 第44课手记 这一节课评估自己的游戏代码,作者这节课的目的是希望你养成良好的写类和写函数的习惯,并且每段功能不同的代码之间要留有空行,...

220100
来自专栏AndroidTv

谈谈你对 Java 平台的理解声明提问正文

13040
来自专栏斑斓

Scala的面向对象与函数编程

很难说FP和OO孰优孰劣,应该依场景合理选择使用。倘若从这个角度出发,Scala就体现出好处了,毕竟它同时支持了OO和FP两种设计范式。 从设计角度看,我认为O...

32250
来自专栏佳爷的后花媛

php中时间戳等相关小概念笔记

首先说下时间戳吧,因为工作需要,对接接口时要用到各种类型的时间戳,所以抽个时间把这些时间戳整理了下. 如果想看看返回的时间戳对不对,这里有个在线转换工具,可以...

19930
来自专栏互扯程序

设计模式不止23种!

现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。

14540
来自专栏V站

php时间函数 time()和Date()详解

使用函式 date() 实现  <?php echo $showtime=date("Y-m-d H:i:s");?>  显示的格式: 年-月-日 小时:分...

1.1K60
来自专栏醒者呆

基础大扫荡——背包,栈,队列,链表一口气全弄懂

提到数据结构,不得不说数据类型,有人将他们比作分子和原子的关系,我们都知道大自然最小的构成单位是原子,数据类型描述的是原子的内部,如质子、中子的情况,而数据结构...

446150

扫码关注云+社区

领取腾讯云代金券