JavaSE学习笔记21:Java正则表达式

Java正则表达式

 

1、正则表达式(特点)

正则表达式,顾名思义,就是符合一定规则的表达式。作用是专门用于操作字符串,虽说String类中已经有了很多操作字符串的方法,但是它们的功能单一,操作起来还麻烦,正则弥补了它们的补足。

 

下面我们通过一个小例子来感受一下区别:

需求:对QQ号码进行校验,要求:5~15位,0不能开头,只能是数字。

(1)常规的做法:

class CheckQQ

{

public static void main(String[] args)

{

String qq="3891289y49";

checkQQ(qq);

}

 

//常规的做法:

public static void checkQQ(String str)

{

String qq=str;

if(str.length()>=5&&str.length()<=15)

{

if(!str.startsWith("0"))

{

char[] chs=str.toCharArray();

boolean flag=true;

for(int x=0;x<chs.length;x++)

{

if(!(chs[x]>='0'&&chs[x]<='9'))

{

flag=false;

break;

}

}

if(flag==true)

System.out.println("qq:"+qq);

else

System.out.println("出现非法字符!");

}

else

{

System.out.println("不可以0开头!");

}

}

else

{

System.out.println("长度错误!");

}

}

}

我们可以优化一下:

/*

char[] chs=str.toCharArray();

boolean flag=true;

for(int x=0;x<chs.length;x++)

{

if(!(chs[x]>='0'&&chs[x]<='9'))

{

flag=false;

break;

}

}

if(flag==true)

System.out.println("qq:"+qq);

else

System.out.println("出现非法字符!");

*/

回忆之前我们学过的Integer.parseInt(String str);

如果str=“12a”,那么Integer.parseInt(String str)就会抛出异常:NumberFormatException·。

因此我们可以将这个方法用在此处。

 

将上面一大片代码改成:

try

{

long l=Long.parseLong(qq);

System.out.println("qq:"+qq);

}

catch(Exception e)

{

System.out.println("出现非法字符!");

}

 

但是,尽管我们这么优化,代码还是很复杂。因此我们只得另辟蹊径。

(2)用正则表达式来做:

通过查找API文档,我们发现String类中一个方法,之前我们没讲的:

boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。用规则匹配整个字符串,只要有一处不符合规则,匹配结果就返回-1。

什么意思呢,就是说字符串是否符合给定的规则。这个规则通过一个字符串来定义,因此称之为正则表达式。正则表达式通常用regex来表示,它也是一个字符串。

import java.util.regex.*;

class CheckQQ

{

public static void main(String[] args)

{

String qq="3891289y49";

checkQQ(qq);

}

//用正则表达式:

public static void checkQQ(String str)

{

String qq=str;

String regex="[1-9][0-9]{4,14}";

 

boolean flag=qq.matches(regex);

if(flag)

System.out.println("qq:"+qq);

System.out.println("出现非法字符");

}

}

解释:

"[1-9][0-9]{4,14}"

[1-9]:表示字符串的第一位必须是1到9范围内的一个数字。

[0-9]:表示字符串的第二位必须是0到9范围内的一个数字。

{4,14}:表示想第二位这样的数据可以出现4,5,6,7,8,9,10,11,12,13,14次,包括第二位这一次出现在内。

"[1-9][0-9]{4,14}"从左往右看,还是从右往左看都可以。

 

这些符号都封装在java.util.regex包中的Pattern类中,因此要导包。

 

可以明显的看到,代码少了很多,这就是正则表达式的威力之处。可以看出,正则表达式就是用一些特定的符号来表示一些代码操作,这样就简化了书写。所以学习正则表达式就是在学习一些特殊符号的使用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值