1.判断一个字符串是否有数字组成,不使用正则
package com.test.demo; public class zhengze { public static void main(String[] args) { String s="sdaflfj12343"; char c[] =s.toCharArray();//将字符串转成字符数组 for(int i=0;i<c.length;i++){ if(!(c[i]>='0' && c[i]<='9')){ System.out.println("不是全由数字组成"); return; } } System.out.println("全由数字组成"); }
使用正则表达式
String s="sdaflfj12343"; if(s.matches("\d+")){//判断是否是数字 System.out.println("全都是由数字组成"); return; } System.out.println("全都不由数字组成"); }
1.1Pattern类
Java中,所有的正则操作类都在java.util.regex包中,最重要的两个类:
- ·Pattern
- ·Matcher
Pattern类主要作用就是用来定义正则规范,获取Matcher类对象,进行字符串分割。
·定义正则规范:在Pattern类中,列出了全部的正则表达式的内容
字符匹配:
序号 |
正则表达式 |
描述 |
1 |
[abc] |
表示取值可能是a可能是b可能是c |
2 |
[^abc] |
表示取值不可能是a或b或c |
3 |
[a-zA-Z] |
表示全部是字母,大小写都可以 |
简短表达式
序号 |
正则表达式 |
描述 |
1 |
d |
表示是数字 |
2 |
D |
表示是非数字 |
3 |
w |
表示是数字字母下划线 |
4 |
W |
表示非数字字母下划线 |
5 |
s |
表示是空格 |
6 |
S |
表示是非空格 |
列出次数的表达式
序号 |
正则表达式 |
描述 |
1 |
? |
表示出现0次或者一次 |
2 |
* |
表示0次或多次 |
3 |
+ |
表示一次或多次 |
4 |
{n} |
表示恰好出现n次 |
5 |
{n,} |
表示出现至少n次 |
6 |
{n,m} |
表示出现的次数在n到m之间 |
package com.wanczy.regexDemo; public class RegexDemo02 { public static void main(String[] args) { String s = "13515967537"; if(s.matches("\d{11}")){ System.out.println("是11位数字"); return; } System.out.println("不是11位数字"); } }
关系表达式
序号 |
正则表达式 |
描述 |
1 |
(X|Y) |
表示是x或者y |
package com.wanczy.regexDemo; public class RegexDemo02 { public static void main(String[] args) { String s = "coma"; if(s.matches("(com|cn|com.cn|gov|edu)")){ System.out.println("是邮箱后缀"); return; } System.out.println("不是邮箱后缀"); } }
Pattern类是正则操作中最重要的一个类,所有的正则规范都必须在Pattern类中规定(这也是在String支持正则之前,之后话String可以直接操作正则表达式)假设现在我们没有学习String,也不知道String对正则有支持。
Pattern类中常用的操作方法:
- ·取得Pattern类的对象:public static Pattern compile(String regex),参数是正则表达式
- ·取得Matcher类对象:public Matcher matcher(CharSequence input),CharSequence是字符串对象的最高的父类,表示的是需要进行正则匹配的字符 串
- ·字符串拆分:public String[] split(CharSequence input):进行字符串拆分,需要拆分的字符串就是传入的input。
范例:进行字符串的拆分
//字符串的拆分 String s ="sdla23fkjklas;fj23l;as23dfjlas;fjl"; Pattern p =Pattern.compile("[a-zA-Z]+"); String sa[] =p.split(s);//进行字符串拆分 for (int i = 0; i < sa.length; i++) { System.out.println(sa[i]); }
2.1Matcher类
主要的作用就是进行正则的匹配和字符串替换,本身没有构造发方法,必须使用Pattern类的matcher方法完成Matcher对象实例化。相应的操作方法:
·public boolean matches():进行字符串匹配
·public String replaceAll(String replacement):替换所有匹配的字符串
·public String replaceFirst(String replacement):替换第一次匹配的字符串
范例:进行邮箱验证
//邮箱的验证 String s="sadfds_asfd@162.com"; Pattern p=Pattern.compile("\w+@\w+\.(com|cn\.cn|cn\.edu|gov)");//取得Pattern类对象 Matcher mathcer=p.matcher(s);//取得Matcher 对象 boolean falg =mathcer.matches();//进行验证 if(falg){ System.out.println("是邮箱"); }else{ System.out.println("不是邮箱"); } }
字符串替换
public static void main(String[] args) { String s = "asfd123asef123asdf43"; Pattern p = Pattern.compile("\d+");//取得Pattern类对象 Matcher m = p.matcher(s);//取得Matcher类对象 // s = m.replaceAll("你好中国");//将正则匹配的内容替换成你好中国 s = m.replaceFirst("你好中国");//将第一个匹配的内容替换成你好中国 System.out.println(s); }