正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。
正则表达式的特点是:
1. 灵活性、逻辑性和功能性非常的强;
2. 可以迅速地用极简单的方式达到字符串的复杂控制。
3. 对于刚接触的人来说,比较晦涩难懂。
由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。
Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches();此三句等效于boolean b = Pattern.matches("a*b","aaaaab");
以下使用Java写的一个用正则表达式来校验qq号是否合法(其中也用了传统的方法来做个比较),手机号字段是否以规定的号数开头package 正则表达式; package 正则表达式; import java.util.regex.Pattern; public class RegexDemo { public static void main(String[] args) { // TODO Auto-generated method stub checkQQ();//自己实现代码校验QQ号是否正确 checkQQ_1();//正则表达式来校验qq号码 checkTel();//正则表达式来校验手机号码字段 } //匹配手机号段只有13xxx 15xxx 18xxx public static void checkTel() { String tel = "13900001111"; String telReg = "1[358]d{9}";//第一位是1或者[1],第二位是3,5,8中的一个,后面是9个数字 System.out.println("手机号字段"+tel.matches(telReg)); } //此静态方法应用正则表达式来校验qq号码 public static void checkQQ_1() { String qq = "111h23"; //规则,第一位0-9之间的数字,第二位0-9之间的数字,位数在4--14位数字 String regex = "[1-9][0-9]{4,14}";//此行和下面一行是一个意思 String regex2 = "[1-9]d{4,14}"; //参数:regex - 用来匹配此字符串的正则表达式 //boolean flag = qq.matches(regex);//通知此字符串是否匹配给定的正则表达式。 boolean flag = Pattern.matches(regex,qq);//与上面一行效果一致 if(flag) System.out.println(qq+"合法"); else System.out.println(qq+"不合法"); } /* * 对QQ号码进行校验 * 要求:5--15 0不能开头,只能是数字 * * 这种方式使用String类中的方法进行了组合完成了需求,过于复杂 */ public static void checkQQ() { String qq = "112w45"; int len = qq.length(); if(len>=5&&len<=15) { if(!qq.startsWith("0")) { try { long l = Long.parseLong(qq); System.out.println("qq:"+l); } catch (NumberFormatException e) { // TODO: handle exception System.out.println("qq:"+qq+" 中出现非法字符!!。。。"); } /*或者下面的 char[] arr = qq.toCharArray(); boolean flag = true; for(int x=0;x<arr.length;x++) { if(!(arr[x]>='0'&&arr[x]<='9')) { flag = false; break; } } if(flag)//flag一直为真 { System.out.println("qq:"+qq); } else { System.out.println("出现非法字符"); } */ } else { System.out.println("不能0开头"); } } else { System.out.println("长度不对!!!"); } } } (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|