【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 的用法如下:
//定义匹配模式--正则表达式 String pattern = "\\w"; //字母、数字、下划线 //创建字符串 String str = "1"; //matches方法会返回一个boolean值 boolean matches = str.matches(pattern); //打印结果 System.out.println(matches);
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 的用法如下:
//定义匹配模式--正则表达式 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基础——字符串处理】正则表达式 及其 相关方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南