Java正则表达式
创始人
2024-03-27 04:24:46

Java正则表达式

  • 正则表达式概述、初体验
  • 正则表达式的匹配规则
  • 正则表达式的常见案例
  • 正则表达式在方法中的应用
  • 正则表达式爬取信息

正则表达式概述、初体验

正则表示:
正则表达式可以用一些规定的字符来制定规则,并用来校验数据格式的合法性。
正则表达式初体验:
需求:假如现在要求校验一个qq号码是否正确,6位及20位之内,必须全部是数字。
先使用目前所学知识完成校验需求;然后体验一下正则表达式校验。

package snow.d6_regex;public class RegexDemo {public static void main(String[] args) {// 需求,校验qq号码,必须全部数字6-20位System.out.println(checkQQ("251425998"));System.out.println(checkQQ1("251425998"));}public static boolean checkQQ1(String qq){return qq!=null && qq.matches("\\d{6,20}");}public static boolean checkQQ(String qq){// 判断qq号码的长度是否满足要求if(qq == null || qq.length()<6  || qq.length()>20){return false;}//判断qq中是否全部是数字,不是返回falsefor (int i = 0; i < qq.length(); i++) {// 获取每位字符char ch = qq.charAt(i);// 判断这个字符是否不是数字,不是数字直接返回falseif(ch < '0'||ch > '9'){return false;}}return true;}
}

正则表达式的匹配规则

字符类(默认匹配一个字符)
在这里插入图片描述
预定义的字符类(默认匹配一个字符)
在这里插入图片描述
贪婪的量词(配合匹配多个字符)
在这里插入图片描述
字符串提供了匹配正则表达式规则的API
在这里插入图片描述

package snow.d6_regex;public class RegexDemo1 {public static void main(String[] args) {// 只包含a或b或c一个字符System.out.println("a".matches("[abc]")); // true// 不能包含a或b或c字符System.out.println("d".matches("[^abc]")); // true// 任何一个字符System.out.println("aa".matches(".")); // false// 一个空白字符System.out.println("a b".matches(".\\s."));// true// 一个数字或英文或下划线System.out.println("1a_".matches("\\w\\w\\w")); // true// 一个数字System.out.println("1".matches("\\d")); // true// 校验密码 必须包含数字和字母和下划线至少6位System.out.println("83__sd".matches("\\w{6,}")); //true// 验证码 必须是数字和字母 必须是4位System.out.println("a2s2".matches("[a-zA-Z0-9]{4}")); //trueSystem.out.println("acd2".matches("[\\w&&[^_]]{4}")); //true}
}

正则表达式的常见案例

案例一:请使用正则表达式完成需求
需求:
1.请编写程序模拟用户输入手机号码、验证格式正确,并给出提示,直到格式输入正确为止。
2.请编写程序模拟用户输入邮箱号码、验证格式正确,并给出提示,直到格式输入正确为止。
3.请编写程序模拟用户输入电话号码、验证格式正确,并给出提示,直到格式输入正确为止。
分析:
定义方法,接受用户输入的数据,使用正则表达式完成检验,并给出提示。

package snow.d6_regex;
import java.util.Scanner;public class RegexDemojy {public static void main(String[] args){Scanner sc = new Scanner(System.in);// 校验手机号码、邮箱、电话号码、金额checkPhone(sc);checkEmail(sc);checkTel(sc);checkmoney(sc);}// 手机号码校验public static void checkPhone(Scanner sc){System.out.println("请您输入您的手机号码:");String phone = sc.next();// 判断手机号码的格式是否正确if(phone.matches("1[3-9]\\d{9}")){System.out.println("手机号码格式正确!");}else {System.out.println("手机号码有误!");checkPhone(sc);}}// 邮箱校验public static void checkEmail(Scanner sc){System.out.println("请您输入您的邮箱:");String email = sc.next();// 判断手机号码的格式是否正确 格式:123455@qq.com  123455@163.com  123455@pci.com.cnif(email.matches("\\w{1,30}@[a-zA-Z0-9]{2,20}(\\.[a-zA-Z0-9]{2,20}){1,2}")){System.out.println("邮箱格式正确!");}else {System.out.println("邮箱有误!");checkEmail(sc);}}// 电话号码校验public static void checkTel(Scanner sc){System.out.println("请您输入您的电话号码:");String tel = sc.next();// 判断手机号码的格式是否正确if(tel.matches("0\\d{2,6}-?\\d{8,20}")){System.out.println("电话号码格式正确!");}else {System.out.println("电话号码有误!");checkTel(sc);}}// 校验金额public static void checkmoney(Scanner sc){System.out.println("请您输入您的金额:");String money = sc.next();// 判断手机号码的格式是否正确if(money.matches("\\d{1,}(\\.\\d{1,2})?")){System.out.println("金额格式正确!");}else {System.out.println("金额格式有误!");checkmoney(sc);}}
}

正则表达式在方法中的应用

在这里插入图片描述

package snow.d6_regex;public class RegexDemo2 {public static void main(String[] args) {String names = "瑞瑞djdjjd云云dfsdakdsdhw勇勇";String[] arrs = names.split("\\w+");for (int i = 0; i < arrs.length; i++) {System.out.println(arrs[i]); //瑞瑞 \n云云 \n勇勇}String name = names.replaceAll("\\w+", " ");System.out.println(name); //瑞瑞 云云 勇勇}
}

正则表达式爬取信息

package snow.d6_regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Test {public static void main(String[] args) {String rs = "程序学习Java,电话020-43422433,或者联系邮箱" +"snow@dream.cn,电话13345678901,02043422433" +"邮箱dream@snow.cn,400-100-4534,4001004534";// 从上面内容中获取电话号码和邮箱// 定义规则String regex = "(\\w{1,30}@[a-zA-Z0-9]{2,20}(\\.[a-zA-Z0-9]{2,20}){1,2})" +"|(1[3-9]\\d{9})|(0\\d{2,6}-?\\d{8,20})|(400-?\\d{3,9}-?\\d{3,9})";// 编译规则为匹配对象Pattern pattern = Pattern.compile(regex);// 得到一个内容匹配器对象Matcher matcher = pattern.matcher(rs);// 开始寻找while (matcher.find()){String rs1 = matcher.group();System.out.println(rs1);}}
}

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...