在Java编程中使用正则表达式_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中
java正则表达式使用、java中使用正则表达式、java正则表达式的使用、如何使用java编程、怎么使用java编程,以便于您获取更多的相关知识。

时间: 2024-07-31 08:09:17

在Java编程中使用正则表达式_java的相关文章

在Java编程中使用正则表达式的基本方法_java

众所周知,在程序开发中,难免会遇到需要匹配.查找.替换.判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力.因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段.  大 家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.   自从jdk1

在Java编程中定义方法_java

方法包含一个方法头和一个方法体.下面是一个方法的所有部分: 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法.定义了该方法的访问类型. 返回值类型 :方法可能会返回值.returnValueType是方法返回值的数据类型.有些方法执行所需的操作,但没有返回值.在这种情况下,returnValueType是关键字void. 方法名:是方法的实际名称.方法名和参数表共同构成方法签名. 参数类型:参数像是一个占位符.当方法被调用时,传递值给参数.这个值被称为实参或变量.参数列表是指方法的参数类型.

深入剖析Java编程中的序列化_java

 Java提供一种机制叫做序列化,通过有序的格式或者字节序列持久化java对象,其中包含对象的数据,还有对象的类型,和保存在对象中的数据类型. 所以,如果我们已经序列化了一个对象,那么它可以被读取并通过对象的类型和其他信息进行反序列化,并最终获取对象的原型. ObjectInputStream 和 ObjectOutputStream对象是高级别的流对象,包含序列化和反序列化的方法. ObjectOutputStream 拥有很多序列化对象的方法,最常用的是:   private void wr

举例讲解设计模式中的访问者模式在Java编程中的运用_java

访问者(Visitor)模式:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作.访问者模式的结构图如下: 通过上图可以看到他有如下角色:抽象访问者(Visitor)角色:定义接口,声明一个或多个访问操作. 具体访问者(ConcreteVisitor)角色:实现抽象访问者所声明的接口,也就是抽象访问者所声明的各个访问操作. 抽象元素(Visitable)角色:声明一个接受操作,接受一个访问者对象作为一个参数. 具体元素结点(Concrete

深入解析Java编程中的抽象类_java

Java程序用抽象类(abstract class)来实现自然界的抽象概念.抽象类的作用在于将许多有关的类组织在一起,提供一个公共的类,即抽象类,而那些被它组织在一起的具体的类将作为它的子类由它派生出来.抽象类刻画了公有行为的特征,并通过继承机制传送给它的派生类.在抽象类中定义的方法称为抽象方法,这些方法只有方法头的声明,而用一个分号来代替方法体的定义,即只定义成员方法的接口形式,而没有具体操作.只有派生类对抽象成员方法的重定义才真正实现与该派生类相关的操作. 在各子类继承了父类的抽象方法之后,

Java编程中10个最佳的异常处理技巧_java

在实践中,异常处理不单单是知道语法这么简单.编写健壮的代码是更像是一门艺术,在本文中,将讨论Java异常处理最佳实践.这些Java最佳实践遵循标准的JDK库,和几个处理错误和异常的开源代码.这还是一个提供给java程序员编写健壮代码的便利手册.Java 编程中异常处理的最佳实践 这里是我收集的10个Java编程中进行异常处理的10最佳实践.在Java编程中对于检查异常有褒有贬,强制处理异常是一门语言的功能.在本文中,我们将尽量减少使用检查型异常,同时学会在Java编程中使用检查型VS非检查型异常

深入理解Java编程中异常处理的优劣_java

Java编程中的异常处理是一个很常见的话题了,几乎任何一门介绍性的Java课程都会提到异常处理.不过,我认为很多人其实没有真正掌握正确处理异常情况的方法和策略,最多也就不过了解个大概,知道概念.我想对三种不同程度和质量的Java异常处理进行了讨论,所阐述的处理异常的方式按手法的高下分为:好,不好和恶劣三种.同时提供了一些解决这些问题的技巧.首先解释一些java异常处理中必须搞清楚的定义和机制.Java语言规范将自Error类或RuntimeException类衍生出来的任何违例都称作"不可检查&

java代码-关于CSDN英雄会挑战赛 java编程中的一些问题

问题描述 关于CSDN英雄会挑战赛 java编程中的一些问题 各位大神,我在挑战英雄会的题目的时候,在线下运行的没有问题,可是一提交就会提示,"挑战失败:你的程序正常编译,不过运行时发生错误,通常是代码有问题,如除数为零数组上下界溢出等" 我觉得可能是java输入数据时的问题,因为题目要求:输入多行数据,输出多行我是这样写的: Scanner scanner = new Scanner(System.in); ArrayList list = new ArrayList(); do {

仔细触摸Java编程中的“文档”和“包”

编程 什么是包 Java中的包(Package)其实指的就是目录,它是为了更好地管理Java类(Class)和接口(Interface).Java语言的包可以被另一个Java开发包所使用.如果我们要引用某个包中的类,用import关键字来标明即可.比如: import java.util. date=new Date  提示:import java.util.表示java.util中的所有公有类和接口被引入到当前包.这里的匹配符可以调入多个类名. 常用的Java标准包 JDK为我