正则表达式

 正则表达式(Regular Expression,在代码中常简写为regex、regexp或RE)是从JDK 1.4引入到Java中的。本质上是一种字符串操作的语法规则,利用此语法规则可以更加灵活的实现字符串的匹配、拆分、替换等操作。

 

实现字符串的判断

public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "123yootk";
		System.out.println(str.matches("\\d+"));
	}
}

正则标记

1、  单个字符(数量:1)

       ·字符:表示由一位字符所组成;

       ·\\:表示转义字符“\”;

       ·\t:表示一个“\t”符号;

       ·\n:匹配换行(\n)符号;

2、  字符集(数量:1)

       ·[abc]:表示可能是字符a或者是字符b或者是字符c中的任意一位;

       ·[^abc]:表示不是a、b、c中的任意一位;

       ·[a-z]:所有的小写字母;

       ·[a-zA-Z]:表示任意的一位字母,不区分大小写;

       ·[0-9]:表示任意的一位数字;

3、  简化的字符集表达式(数量:1)

       ·.:表示任意的一位字符;

       ·\d:等价于“[0-9]”,属于简化写法;

       ·\D:等价于“[^0-9]”,属于简化写法;

       ·\s:表示任意的空白字符,例如:“\t”、“\n”;

       ·\S:表示任意的非空白字符;

       ·\w:等价于“[a-zA-Z_0-9]”,表示由任意的字母、数字、_所组成;

       ·\W:等价于“[^a-zA-Z_0-9]”,表示不是由任意的字母、数字、_所组成;

4、  边界匹配:

       ·^:正则的开始;

       ·$:正则的结束;

5、  数量表达:

       ·正则?:表示此正则可以出现0次或1次;

       ·正则+:表示此正则可以出现1次或1次以上;

       ·正则*:表示此正则可以出现0次、1次或多次;

       ·正则{n}:表示此正则正好出现n次;

       ·正则{n,}:表示此正则出现n次以上(包含n次);

       ·正则{n,m}:表示此正则出现n ~ m次;

6、  逻辑运算:

       ·正则1正则2:正则1判断完成之后继续判断正则2;

       ·正则1 | 正则2:正则1或者是正则2有一组满足即可;

       ·(正则):将多个正则作为一组,可以为这一组单独设置出现的次数。

String类对正则的支持

 

实现字符串替换

public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "hello*)(*()ww(*#mn*";
		String regex = "[^a-z]"; 		// 此处编写正则
		System.out.println(str.replaceAll(regex, ""));	// 字符串替换
	}
}

字符串拆分

public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "ghmfg9mldghrnyo8798o5555tk";
		String regex = "\\d+"; 		// [0-9]一位以上
		String result[] = str.split(regex);
		for (int x = 0; x < result.length; x++) {
			System.out.println(result[x]);
		}
	}
}

验证一个字符串是否是数字,如果是则将其变为double型

public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "10.10";
		String regex = "\\d+(\\.\\d+)?"; 
		if (str.matches(regex)) { 		// 转型之前要进行验证
			System.out.println(Double.parseDouble(str));
		}
	}
}

判断给定的字符串是否是一个IP地址(IPV4)

public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "192.168.1.1";
		String regex = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}";
		System.out.println(str.matches(regex));
	}
}

给定一个字符串,要求判断其是否是日期格式,如果是则将其转换为Date型数据

import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "2013-08-15";
		String regex = "\\d{4}-\\d{2}-\\d{2}";	// 定义验证规则
		if (str.matches(regex)) {		// 符合规则
			Date date = new SimpleDateFormat("yyyy-MM-dd").parse(str);
			System.out.println(date);
		}
	}
}

判断电话号码

Ø  一般要编写电话号码以下几种格式都是满足的:

Ø  格式一:51283346,一般长度是7 ~ 8位的数字是电话号码(正则格式为:“\\d{7,8}”);

Ø  格式二:010-51283346,区号一般是3 ~ 4位,而且区号和电话之间的“-”只有在出现区号时才出现 (正则格式“\\d{3,4}-)?\\d{7,8}”;

Ø  格式三:(010)-51283346,其中在区号前的括号必须成对出现,这样就需要将括号与区号一起显示(正则格式:“((\\d{3,4}-)|(\\(\\d{3,4}\\)-))?\\d{7,8}”)。

public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "(010)-51283346";
		String regex = "((\\d{3,4}-)|(\\(\\d{3,4}\\)-))?\\d{7,8}";
		System.out.println(str.matches(regex));
	}
}








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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值