正则表达式

所有的正则匹配符号都在java.util.Pattern类之中进行定义.


常用符号如下:

1.字符:匹配单个字符
  • a:表示匹配字母a;
  • \\:匹配转义字符"\\";
  • \t:匹配转义字符"\t";
  • \n:匹配转义字符"\n;
2.一组字符:任意匹配里面的一个单个字符
  •  [abc]: 表示匹配abc之中的任意一个;
  •  [^abc]:表示不是其中任意一个;
  •  [a-zA-Z]:表示全部字母中的任意一个;
  •  [0-9]:表示全部数字的任意一个;
 3.边界匹配
  •  ^: 表示一组正则的开始;
  •  $: 表示一组正则的结束;
 4.数量表示:前面的正则都只表示一位,如果想表示多位,则需要数量表示
  •   正则表达式?:正则出现0次或者1次;
  •   正则表达式*:正则出现0次或者1次或者多次;
  •   正则表达式+:正则出现1次或者多次;
  •   正则表达式{n}:正则出现n次;
  •   正则表达式{n,}: 正则出现n次以上;
  •   正则表达式{n,m}:正则出现n至m次;
5.逻辑表示:与,或,非
  • 正则表达式A正则表达式B:表达式A之后紧跟表达式B;
  • 正则表达式A|正则表达式B:表达式AB任选一个;
  • (正则表达式):多个子表达式合成一个,作为组出现;
6.简写表达式
  • .: 表示任意一位字符;
  • \d:表示任意一位数字,等价于[0-9];
  • \D: 表示任意一位非数字,等价于[^0-9];
  • \w: 表示任意一位数字,字母,下划线,等价于[a-zA-Z0-9];
  • \W: 表示任意一位非数字,字母,下划线,等价于[^a-zA-Z0-9];
  • \s: 表示任意一位空格,例如:\n,\t等;
  • \S: 表示任意一位非空格;



      在JDK1.4之后,String类对正则有了直接的方法支持.常常用方法如下:

//与指定正则匹配
public boolean matchs(String regex);

//替换满足指定正则的全部内容
public String replaceAll(String regex,String replacement);


//替换满足指定正则的首个内容
public String replaceFist(String regex,String replacement);


//按指定正则全拆分
public String[] split(String regex);


按指定正则拆分为指定个数
public String[] split(String regex,int limit);



     使用正则完成数字验证

//使用正则完成验证
public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "123";								// 定义字符串
		if (str.matches("\\d+")) {						// 正则验证
			System.out.println("是由数字所组成!");
		} else {
			System.out.println("不是由数字所组成!");
		}
	}
}
     将字符串中的字母消除

public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "a1bb2ccc3dddd4eeeee5fffffff6ggggggg7";
		String regex = "[a-zA-Z]+";							// 字母出现1次或多次
		System.out.println(str.replaceAll(regex, ""));		// 全部替换
		System.out.println(str.replaceFirst(regex, ""));	// 替换首个
	}
}
    字符串按照数字拆分

public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "a1bb2ccc3dddd4eeeee5fffffff6ggggggg7";
		String regex = "\\d";							// 数字出现1次,[0-9]
		String result[] = str.split(regex);			// 拆分
		for (int x = 0; x < result.length; x++) {
			System.out.print(result[x] + "、");
		}
	}
}
    要求字符串格式“aaaaab”,在b之前可以有无数多个a,但是不能没有,至少1个。
public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "aaaaaab";
		String regex = "a+b";						// 1个或多个字母a和1个字母b
		System.out.println(str.matches(regex));	// 正则验证
	}
}
     验证一个字符串是否是整型数据,如果是则将其变为int型数据,而后执行乘法操作
public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "123";							// 定义字符串
		String regex = "\\d+";						// 是否为数字
		if (str.matches(regex)) { 					// 符合于验证要求
			int data = Integer.parseInt(str); 		// 字符串变为int型数据
			System.out.println(data * data);
		} else {
			System.out.println("字符串不是数字所组成!");
		}
	}
}
     验证字符串是否是小数,如果是则将其变为double型数据,而后执行乘法操作
public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "123.1";
		String regex = "\\d+(\\.\\d+)?";
		if (str.matches(regex)) { 						// 符合于验证要求
			double data = Double.parseDouble(str); 		// 字符串变为double型数据
			System.out.println(data * data);
		} else {
			System.out.println("字符串不是数字所组成!");
		}
	}
}
     输入一个字符串,按照年-月-日 时-分-秒的形式,如果正确,则将其变为Date型数据
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "1998-09-19 10:10:10.100";			// 字符串
		String regex = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{3}";
		if (str.matches(regex)) { 							// 符合于验证要求
			Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")
					.parse(str);
			System.out.println(date);
		} else {
			System.out.println("字符串不是日期!");
		}
	}
}
    一个用户名只能由字母、数字、_所组成,其长度只能是6~15位
public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "343234FDSF_";
		String regex = "\\w{6,15}";
		if (str.matches(regex)) { 				// 符合于验证要求
			System.out.println("用户名合法。");
		} else {
			System.out.println("用户名非法!");
		}
	}
}

     验证电话号码是否正确

public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "51283346";
		// 第一步:\\d{7,8},因为电话号码可能是7~8位所组成;
		// 第二步:(\\d{3,4})?\\d{7,8},因为区号由3~4位所组成;
		// 第三步:(\\d{3,4})?-?\\d{7,8},因为-可能出现也可能不出现
		// 第四步:((\\d{3,4}|\\(\\d{3,4}\\))-?)?\\d{7,8}
		String regex = "((\\d{3,4}|\\(\\d{3,4}\\))-?)?\\d{7,8}";
		if (str.matches(regex)) { 					// 符合于验证要求
			System.out.println("TRUE,电话号码输入合法。");
		} else {
			System.out.println("FLASE,电话号码输入非法!");
		}
	}
}
     验证一个email地址,email地址的用户名由字母、数字、_、.所组成,其中不能以数字和.开头,而且email地址的域名只能    是.com、.cn、.net

public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "mldnqa@163.net";
		String regex = "[a-zA-Z_][a-zA-Z_0-9\\.]*@[a-zA-Z_0-9\\.]+\\.(com|cn|net)";
		if (str.matches(regex)) { 							// 符合于验证要求
			System.out.println("TRUE,EMAIL输入合法。");
		} else {
			System.out.println("FLASE,EMAIL输入非法!");
		}
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值