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

2021/5/11 20:27:27

本文主要是介绍【Java基础——字符串处理】正则表达式 及其 相关方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

正则表达式 及其 相关方法

    • 一、概述
    • 二、String类 相关方法
      • matches(String regex)
      • replaceAll
      • split
    • 练习
      • Ⅰ:简单验证身份证号码
      • Ⅱ:简单提取标记语言标签间内容
      • Ⅲ:简单验证用户输入是否为邮箱
      • Ⅳ:简单验证电话号码

一、概述

正则表达式(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类型的返回值。

  • 需传入参数是作为匹配规则的正则表达式。
    matches

  • matches 的用法如下:

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

replaceAll

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

  • 第一个参数为正则表达式,第二个字符为替换后字符。
    replaceAll

  • replaceAll 的用法如下:

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

运行结果

split

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

运行结果如下:
运行结果

练习

Ⅰ:简单验证身份证号码

写出方法:

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"));

运行结果如下:
运行结果

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

写出方法:

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

运行结果如下:
运行结果

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

写出方法:

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"));

运行结果如下:
运行结果

Ⅳ:简单验证电话号码

写出方法:

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基础——字符串处理】正则表达式 及其 相关方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程