在Java编程中使用正则表达式

 更新时间:2015年08月24日 08:57:38   作者:selFire  
这篇文章主要介绍了在Java编程中使用正则表达式,注意使用matches()方法检测一下Java对正则表达式的支持情况,需要的朋友可以参考下

在程序设计过程中,经常需要对输入的数据格式进行检查,这时就会用到正则表达式,匹配正则表达式则数据格式正确,否则格式错误。为了检查输入的数据是否满足某种格式,可以使用String类的matches()方法进行判断,语法格式如下:

boolean matches(String regex)

regex:指定的正则表达式。
返回值:返回boolean类型。
该方法用于告知当前字符串是否匹配参数regex指定的正则表达式,返回值是boolean类型,如果当前字符串与正则表达式匹配,则该方法返回true,否则返回false。

正则表达式是由一些含有特殊意义的字符组成的字符串,这些含有特殊意义的字符称为元字符,下面列出了正则表达式的部分元字符,在正则表达式的写法中,要在下列元字符的前面添加“\”符号进行转译,例如元字符“\d”在正则表达式的写法中是“\d”,但是对于“.”,转译后就不代表任意一个字符啦,而是表示一个具体的句点。

.:代表任意一个字符。
\d:代表0~9的任何一个数字。
\D:代表任何一个非数字字符。
\s:代表空白字符。
\S:代表非空白字符。
\w:代表可用作标识符的字符,但不包括“$”。
\W:代表不可用作标识符的字符。
\p{Lower}:代表小写字母a~z。
\p{Upper}:代表大写字母A~A。
\p{ASCII}:ASCII字符。
\p{Alpha}:字母字符。
\p{Digit}:十进制数字,0~9。
\p{Alnum}:数字或字母字符。
\p{Punct}:标点符号。
\p{Graph}:可见字符。
\p{Print}:可打印字符。
\p{Blank}:空白或制表符。
\p{Cntrl}:控制字符。

在使用 正则表达式时,如果需要某一类型的元字符多次输出,逐个输入就相当麻烦,这时就可以使用正则表达式的限定字符来重复次数,下面列出了常用限定符及其含义。

?:0次或1次。
*:0次或多次。
+:0次或1次。
{n}:重复n次。
{n,}:至少重复n次。
{n,m}:重复n~m次。

在正则表达式中还可以用方括号把多个字符括起来,方括号中各种正则表达式代表不同的含义,下面列出了方括号中元字符及其含义。

[abc]:表示a、b或者c。
[^abc]:表示a、b和c之外的任何字符。
[a-zA-Z]:a~z或A~Z的任何字符。
[a-d[m-p]]:a~d或m~p的任何字符。
[a-z&&[def]]:d、e或者f。
[a-z&&[^bc]]:a~z之间不含b和c的所有字符。
[a-z&&[^m-p]]:a~z之间不含m~p的所有字符。


用法示例:
1、车牌号:

/**

* 

* @description:验证车牌号

* @param carNum

*      豫A106EK

* @return 合法:true 不合法:false

*/

public static boolean validateCarNum(String carNum) {

boolean result = false;

String[] provence = new String[] { "京", "津", "冀", "晋", "辽", "吉", "黑", "沪", "苏", "浙", "皖", "闽", "赣", "鲁", "豫", "鄂", "湘", "粤", "桂", "琼", "渝",

"川", "黔", "滇", "藏", "陕", "甘", "青", "宁", "新", "港", "澳", "蒙" };

String reg = "[\u4e00-\u9fa5]{1}[A-Z]{1}[A-Z_0-9]{5}";

boolean firstChar = false;

if (carNum.length() > 0) {

firstChar = Arrays.asList(provence).contains(carNum.substring(0, 1));

}

try {

Pattern p = Pattern.compile(reg);

Matcher m = p.matcher(carNum);

if (m.matches() && firstChar) {

result = true;

} else {

result = false;

}

} catch (Exception e) {

e.printStackTrace();

}

return result;

}

2、手机号码:

/**

* 

* @description:验证手机号码

* @param mobileNum 15516985859

* @return 合法:true 不合法:false

*/

public static boolean isMobileNum(String mobileNum) {

boolean result = false;

try {

Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");

Matcher m = p.matcher(mobileNum);

result = m.matches();

} catch (Exception e) {

e.printStackTrace();

}

return result;

}


手机号+固定电话:010-1111111,15516985859,0377-1111111

//java检测是否为电话号码(手机、固定电话验证)

String legalPhone = "";
String regExp ="^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}|[0]{1}[0-9]{2,3}-[0-9]{7,8}$";
Pattern p = Pattern.compile(regExp);
Matcher m = p.matcher(importPotentialBFOs[i].getLegalPhone());
if(m.find()){ //注意:m.find只能用一次,第二次调用后都为false
 legalPhone = importPotentialBFOs[i].getLegalPhone();
 uploadTmp.setLegalTelephone(legalPhone);

}else{
 throw new BizException("联系电话格式错误!");
}

3.实数:

String[] arrs=new String[]{"a","1.123","-1.23","0","+111"};

      String regex="-?\\d+\\.?\\d*";

      Pattern p = Pattern.compile(regex);

      for (int i = 0; i < arrs.length; i++) {

       Matcher m = p.matcher(arrs[i]);

       System.out.println(arrs[i]+":"+m.matches());

 }

打印:

a:false

1.123:true

-1.23:true

0:true

+111:false

相关文章

  • java实现建造者模式(Builder Pattern)

    java实现建造者模式(Builder Pattern)

    这篇文章主要为大家详细介绍了java实现建造者模式Builder Pattern,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • SpringBoot导入导出数据实现方法详解

    SpringBoot导入导出数据实现方法详解

    这篇文章主要介绍了SpringBoot导入导出数据实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-12-12
  • 关于Java实现HttpServer模拟前端接口调用

    关于Java实现HttpServer模拟前端接口调用

    这篇文章主要介绍了关于Java实现Http Server模拟前端接口调用,Http 协议是建立在 TCP 协议之上的协议,所以能用 TCP 来自己模拟一个简单的 Http Server 当然是可以的,需要的朋友可以参考下
    2023-04-04
  • Java并发编程之常用的辅助类详解

    Java并发编程之常用的辅助类详解

    这篇文章主要给大家介绍了关于Java并发编程之常用的辅助类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Spring cloud OpenFeign中动态URl、动态传递接口地址代码示例

    Spring cloud OpenFeign中动态URl、动态传递接口地址代码示例

    openFeign是作为微服务之间调用的解决方案,每个微服务项目是必不可少的,下面这篇文章主要给大家介绍了关于Spring cloud OpenFeign中动态URl、动态传递接口地址的相关资料,需要的朋友可以参考下
    2024-02-02
  • Java枚举_动力节点Java学院整理

    Java枚举_动力节点Java学院整理

    enum 的全称为 enumeration, 是 JDK 5 中引入的新特性,存放在 java.lang 包中。这篇文章给大家介绍Java枚举相关知识,需要的的朋友参考下
    2017-04-04
  • Servlet实现简单文件上传功能

    Servlet实现简单文件上传功能

    这篇文章主要为大家详细介绍了Servlet实现简单文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Lock、Condition实现简单的生产者消费者模式示例

    Lock、Condition实现简单的生产者消费者模式示例

    这篇文章主要介绍了Lock、Condition实现简单的生产者消费者模式示例,需要的朋友可以参考下
    2014-04-04
  • idea springboot 修改css,jsp不重启实现页面更新的问题

    idea springboot 修改css,jsp不重启实现页面更新的问题

    这篇文章主要介绍了idea springboot 修改css,jsp不重启实现页面更新的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • 详解SpringBoot 调用外部接口的三种方式

    详解SpringBoot 调用外部接口的三种方式

    SpringBoot不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程,这篇文章主要介绍了SpringBoot 调用外部接口的三种方式,需要的朋友可以参考下
    2023-04-04

最新评论