java 正则表达是学习

正则表达式

 

(1)查询:
  以下是代码片段:
  String str="abc efg ABC";

  String regEx="a|f"; //表示a或f

    Pattern p=Pattern.compile(regEx);

  Matcher m=p.matcher(str);

  boolean rs=m.find();
  
  如果str中有regEx,那么rs为true,否则为flase。如果想在查找时忽略大小写,则可以写成Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);

 (2)提取:
  以下是代码片段:
  String regEx=".+/(.+)$";

  String str="c:/dir1/dir2/name.txt";

  Pattern p=Pattern.compile(regEx);

  Matcher m=p.matcher(str);

  boolean rs=m.find();

  for(int i=1;i<=m.groupCount();i++){

  System.out.println(m.group(i));

  }
  
  以上的执行结果为name.txt,提取的字符串储存在m.group(i)中,其中i最大值为m.groupCount();  
 (3)分割:

  以下是代码片段:

  String regEx="::";

  Pattern p=Pattern.compile(regEx);

  String[] r=p.split("xd::abc::cde");

  执行后,r就是{"xd","abc","cde"},其实分割时还有跟简单的方法:

  String str="xd::abc::cde";

  String[] r=str.split("::");
  
  (4)替换(删除):

  
  以下是代码片段:

  String regEx="a+"; //表示一个或多个a

  Pattern p=Pattern.compile(regEx);

  Matcher m=p.matcher("aaabbced a ccdeaa");

  String s=m.replaceAll("A");rn p=Pattern.compile
  
  结果为"Abbced A ccdeA"
 
  如果写成空串,既可达到删除的功能,比如:
  
  String s=m.replaceAll("");
  
  结果为"bbced ccde"

  附:
  
  /D 等於 [^0-9] 非数字
  /s 等於 [ /t/n/x0B/f ] 空白字元
  /S 等於 [^ /t/n/x0B/f ] 非空白字元
  /w 等於 [a-zA-Z_0-9] 数字或是英文字  
  /W 等於 [^a-zA-Z_0-9] 非数字与英文字
  
  ^ 表示每行的开头
  $ 表示每行的结尾

 

 

java常用正则表达式

 

import java.util.regex.Matcher;

import java.util.regex.Pattern;

 

/**

 * @author        Der    

 * @date          2006-10-23

 * @packeage_name regex

 * 

 */

public class RegexChk

{

 

public  boolean startCheck(String reg,String string)

{

boolean tem=false;

Pattern pattern = Pattern.compile(reg);

Matcher matcher=pattern.matcher(string);

tem=matcher.matches();

return tem;

}

 

         /**

* 检验整数,适用于正整数、负整数、0,负整数不能以-0开头, 

          * 正整数不能以0开头

* */

public boolean checkNr(String nr)

{

String reg="^(-?)[1-9]+//d*|0";

return startCheck(reg,nr);

}

 

/**

* 手机号码验证,11位,不知道详细的手机号码段,只是验证开头必须是1和位数

* */

public boolean checkCellPhone(String cellPhoneNr)

{

String reg="^[1][//d]{10}";

return startCheck(reg,cellPhoneNr);

}

/**

* 检验空白符

* */

public boolean checkWhiteLine(String line)

{

String regex="(//s|//t|//r)+";

return startCheck(regex,line);

}

/**

* 检查EMAIL地址

* 用户名和网站名称必须>=1位字符

* 地址结尾必须是以com|cn|com|cn|net|org|gov|gov.cn|edu|edu.cn结尾

* */

public boolean checkEmailWithSuffix(String email)

{

String regex="//w+//@//w+//.(com|cn|com.cn|net|org|gov|gov.cn|edu|edu.cn)";

return startCheck(regex,email);

}

/**

* 检查EMAIL地址

* 用户名和网站名称必须>=1位字符

* 地址结尾必须是2位以上,如:cn,test,com,info

* */

public boolean checkEmail(String email)

{

String regex="//w+//@//w+//.//w{2,}";

return startCheck(regex,email);

}

/**

* 检查邮政编码(中国),6位,第一位必须是非0开头,其他5位数字为0-9

* */

public boolean checkPostcode(String postCode)

{

String regex="^[1-9]//d{5}";

return startCheck(regex,postCode);

}

/**

* 检验用户名

* 取值范围为a-z,A-Z,0-9,"_",汉字,不能以"_"结尾

* 用户名有最小长度和最大长度限制,比如用户名必须是4-20位

* */

public boolean checkUsername(String username,int min,int max)

{

String regex="[//w/u4e00-/u9fa5]{"+min+","+max+"}(?<!_)";

return startCheck(regex,username);

}

/**

* 检验用户名

* 取值范围为a-z,A-Z,0-9,"_",汉字,不能以"_"结尾

* 有最小位数限制的用户名,比如:用户名最少为4位字符

* */

public boolean checkUsername(String username,int min)

{

//[//w/u4e00-/u9fa5]{2,}?

String regex="[//w/u4e00-/u9fa5]{"+min+",}(?<!_)";

return startCheck(regex,username);

}

/**

* 检验用户名

* 取值范围为a-z,A-Z,0-9,"_",汉字

* 最少一位字符,最大字符位数无限制,不能以"_"结尾

* */

public boolean checkUsername(String username)

{

String regex="[//w/u4e00-/u9fa5]+(?<!_)";

return startCheck(regex,username);

}

/**

*  查看IP地址是否合法

* */

public boolean checkIP(String ipAddress)

{

String regex="(//d{1,2}|1//d//d|2[0-4]//d|25[0-5])//." +

    "(//d{1,2}|1//d//d|2[0-4]//d|25[0-5])//." +

    "(//d{1,2}|1//d//d|2[0-4]//d|25[0-5])//." +

    "(//d{1,2}|1//d//d|2[0-4]//d|25[0-5])";

return startCheck(regex,ipAddress);

}

/**

* 验证国内电话号码

* 格式:010-67676767,区号长度3-4位,必须以"0"开头,号码是7-8位

* */

public boolean checkPhoneNr(String phoneNr)

{

String regex="^[0]//d{2,3}//-//d{7,8}";

return startCheck(regex,phoneNr);

}

/**

* 验证国内电话号码

* 格式:6767676, 号码位数必须是7-8位,头一位不能是"0"

* */

public boolean checkPhoneNrWithoutCode(String phoneNr)

{

String reg="^[1-9]//d{6,7}";

return startCheck(reg,phoneNr);

}

/**

* 验证国内电话号码

* 格式:0106767676,共11位或者12位,必须是0开头

* */

public boolean checkPhoneNrWithoutLine(String phoneNr)

{

String reg="^[0]//d{10,11}";

return startCheck(reg,phoneNr);

}

/**

* 验证国内身份证号码:15或18位,由数字组成,不能以0开头

* */

public boolean checkIdCard(String idNr)

{

String reg="^[1-9](//d{14}|//d{17})";

return startCheck(reg,idNr);

}

/**

* 网址验证<br>

* 符合类型:<br>

*         http://www.test.com<br>

*         http://163.com

* */

public boolean checkWebSite(String url)

{

//http://www.163.com

String reg="^(http)//://(//w+//.//w+//.//w+|//w+//.//w+)";

return startCheck(reg,url);

}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值