【Java基础——字符串处理】正则表达式 及其 相关方法

正则表达式 及其 相关方法

一、概述

正则表达式(regular expression) 描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

常用的正则表达式如下:

元字符 功能说明
. 匹配除换行符意外的任意单个字符
* 匹配位于*之前的字符或子模式0次或多次出现
+ 匹配位于+之前的字符或子模式1次或多次出现
- 在[]之内用来表示范围
| 匹配位于|之前或之后的字符
^ 匹配以^后面的字符或模式开头的字符串
$ 匹配以$前面的字符或模式结束的字符串
? 匹配位于“?”之前的0个或1个字符或字模式
\ 表示位于\之后的转义字符
\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个(水平)制表符
\v 匹配一个垂直制表符
\d 匹配任何数字,相当于[0-9]
\s 匹配任何空白字符,包括空格、制表符、换页符,等效于[\f\n\r\t\v]
\w 匹配字母、数字、下划线,等效于[a-zA-Z0-9_]
\W 与\w相反,等效于[^a-zA-Z0-9_]
() 将()中内容作为一个整体来看待
{} 按{}中指定的次数进行匹配,例如,{3,8}表示前面的字符或模式至少重复3次而最多重复8次
[] 匹配位于[]中的任意一个字符
[^abc] []中加^表示反向字符集,本例中匹配除a、b、c之外任何字符
[a-z] []中加-表示给定范围,本例中匹配所有小写字母

二、String类 相关方法

matches(String regex)

  • matches方法主要用于匹配验证字符串,在验证中十分应用十分广泛。

  • 调用它可得到一个boolean类型的返回值。

  • 需传入参数是作为匹配规则的正则表达式。
    【Java基础——字符串处理】正则表达式 及其 相关方法

  • matches 的用法如下:

//定义匹配模式--正则表达式
String pattern = "\\w";    //字母、数字、下划线
//创建字符串
String str = "1";
//matches方法会返回一个boolean值
boolean matches = str.matches(pattern);
//打印结果
System.out.println(matches);

replaceAll

  • replaceAll 方法用于对字符串中同种类型的字符进行批量替换操作。

  • 第一个参数为正则表达式,第二个字符为替换后字符。
    【Java基础——字符串处理】正则表达式 及其 相关方法

  • replaceAll 的用法如下:

//定义匹配模式--正则表达式
String pattern = "\\w";        //字母、数字、下划线
//创建字符串
String str = "1uhhkh&*(^%)";
//replaceAll方法会返回一个新的String字符串,并不会修改原字符串
String result = str.replaceAll(pattern,"*");
//打印结果
System.out.println("替换前:" + str);
System.out.println("替换后:" + result);

【Java基础——字符串处理】正则表达式 及其 相关方法

split

  • split 方法 以某种模式的字符为分割点,切割字符串,将其分割为一个字符串数组
  • 需传入参数是作为分割点的正则表达式。
    【Java基础——字符串处理】正则表达式 及其 相关方法
  • split 的用法如下:
//定义匹配模式--正则表达式
String pattern = "\\w";        //字母、数字、下划线
//创建字符串
String str = "1|uh|hkh|&*(|^|%)";
//split方法会返回一个String数组
String[] result = str.split(pattern);
//打印结果
System.out.println(Arrays.toString(result));

运行结果如下:
【Java基础——字符串处理】正则表达式 及其 相关方法

练习

Ⅰ:简单验证身份证号码

写出方法:

public static boolean idMatches(String id){
	String idPattern = "[1-9][0-9]{1,16}[0-9X]";
	return id.matches(idPattern);
}

调用该方法,并打印输出:

System.out.println("输入号码是否为身份证号:"+idMatches("11111111111111111X"));
System.out.println("输入号码是否为身份证号:"+idMatches("123"));

运行结果如下:
【Java基础——字符串处理】正则表达式 及其 相关方法

Ⅱ:简单提取标记语言标签间内容

写出方法:

public void grabInfo() {
	String str4 = "<h1>這是測試結果</h1><p>test a</p>";
	String pattern3 = "(<\\w+>)|(</\\w+>)";
	String str5 = str4.replaceAll(pattern3,"");
	System.out.println(str5);
}

运行结果如下:
【Java基础——字符串处理】正则表达式 及其 相关方法

Ⅲ:简单验证用户输入是否为邮箱

写出方法:

public static boolean emailMatches(String emailAddress){
	String emailPattern = "\\w{6,18}@(\\w*\\.){1,3}com";
	return emailAddress.matches(emailPattern);
}

调用方法:

System.out.println("输入地址是否为邮箱地址:"+emailMatches("644544496@qq.com"));
System.out.println("输入地址是否为邮箱地址:"+emailMatches("123456"));

运行结果如下:
【Java基础——字符串处理】正则表达式 及其 相关方法

Ⅳ:简单验证电话号码

写出方法:

public static boolean phoneNumberMatches(String phoneAddress){
	String phonePattern = "\\d{3,11}";
	return phoneAddress.matches(phonePattern);
}

调用方法:

System.out.println("输入号码是否为电话号码:"+phoneNumberMatches("19936547896"));
System.out.println("输入号码是否为电话号码:"+phoneNumberMatches("12315"));

运行结果如下:
【Java基础——字符串处理】正则表达式 及其 相关方法

上一篇:mysql及sql注入


下一篇:JavaSE基础-----[正则表达式的介绍及基本用法]