您的位置:首页 > 职场人生

【黑马程序员】java基础_正则表达式

2014-06-11 18:09 381 查看
------- android培训java培训、期待与您交流! ----------

正则表达式是一个好东西啊,它能简化代码,并且更直观的可以看出对数据进行了 怎样的处理

今天看了毕老师视频的正则,发现之前各种if 判断数字的方法是多么的繁琐和麻烦

以校验手机号为例,我们使用的手机号码都是11位数的

如果是今天之前,我会这么写代码import java.io.*;

public class RegexDemo {
public static void main(String[] args)throws Exception
{
checkPhone();
}

public static void checkPhone()throws Exception
{
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String phone = bufr.readLine();

char[] arr = phone.toCharArray();
if(phone.length()==11)
{
if(arr[0]=='1')
{
if(arr[1]=='3' || arr[1]=='5' || arr[1]=='8')

{
boolean flag = false;
for(int i=2; i<phone.length(); i++)
{
if(arr[i]<'0' && arr[i]>'9')
{
flag = false;
break;
}
else
flag = true;
}
if(flag)
System.out.println("phone:"+phone);
}
else
System.out.println("二位不等于3、5、8中的一个");
}
else
System.out.println("首位不等于1");
}
else
System.out.println("长度不正确");
}这样显然很麻烦,对一个电话号码的时候合法的判断居然要有这么多。
但是今天之后,我知道了正则表达式,于是我果断将代码改写

import java.io.*;

public class RegexDemo {
public static void main(String[] args)throws Exception
{
checkPhone_2();
}

public static void checkPhone_2()throws Exception
{
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String phone = bufr.readLine();
//正则写规则
String regex = "[1][358]\\d{9}";
boolean flag = phone.matches(regex);

if(flag)
System.out.println(phone+"...是合法号码");
else
System.out.println(phone+"...是非法号码");
}现在,只需要短短的几行代码就可以省去我之前写的大量判断,并让输入按照我认可的方式进行,同时也阅读性大大增强
嘛,好东西,以后可以多多使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: