java中的正则表达式和异常

正则表达式:


作用一:用来校验数据格式是否合法

作用二:在文本中查找满足要求的内容

不用正则表达式:检验QQ号是否合法,要求全部是数字,长度在6-20,不能以0开头

public class test {public static void main(String[] args) {//检验QQ号是否合法,要求全部是数字,长度在6-20,不能以0开头String qq="12345678";System.out.println(checkqq(qq));//trueString qq2="24253fsaf";System.out.println(checkqq(qq2));//false}public static boolean checkqq(String qq){//1判断qq是否为空if(qq==null||qq.length()<6||qq.length()>20||qq.startsWith("0")){return false;}for (int i = 0; i < qq.length(); i++) {char c=qq.charAt(i);if(c<'0'||c>'9'){return false;}}return true;}
}

String提供了一个匹配正则表达式的方法

public boolean matches(String regex)//判断字符串是否符合正则表达式,符合返回true

正则表达式的规则:

这里面的X就是上面两张图片的内容  

"(?!)abc"-->abc忽略大小写 

例子1:校验数据格式是否合法

public class test2 {public static void main(String[] args) {//checkPhone();checkEmail();}public static void checkPhone(){Scanner sa=new Scanner(System.in);while (true) {System.out.println("请输入手机号或者座机号");String phone=sa.nextLine();//18288997799  //010-3525252 0105262366if(phone.matches("(1[3-9]\\d{9})|(0\\d{2,7}-?\\d{4,19})")){System.out.println("你输入的手机号或座机号有效");break;}else {System.out.println("你输入的手机号或座机号无效");continue;}}}public static void checkEmail(){Scanner sa=new Scanner(System.in);while (true) {System.out.println("请输入邮箱号");String phone=sa.nextLine();//deilfa225@163.com//414242532@qq.com//iamhh@hh.com.cnif(phone.matches("\\w{2,}@\\w{2,10}(\\.\\w{2,10}){1,2}"))//  单独的一个点.是通配字符,要加上转义字符\告诉它就是一个点,还要再加一个\告诉第一个\你就是单纯的转义字符\,//不然\.会看成一个整体,这样会报错{System.out.println("你输入的邮箱号有效");break;}else {System.out.println("你输入的邮箱号无效");continue;}}}
}

 例子二:在文本中查找满足要求的内容

步骤:
1:定义爬取规则

2:把正则表达式封装成Patter对象

3:通过Patter对象去获取查找内容的匹配器对象

4:定义一个循环开始爬取信息(matcher.find()有内容返回true)

public class test3 {public static void main(String[] args) {String data="i am hhh,\n"+"my phone is 18388889344 and 18277889933,\n"+"my email is 147889900@qq.com and iamhh@hh.com.cn and deilfa225@163.com,\n"+"我的座机电话是:010-353463,\n"+"热线电话:400-519-8060";//1:定义爬取规则String regex="(1[2-9]\\d{9})|(0\\d{2,7}-?[1-9]\\d{4,19})"+"|(\\w{2,}@\\w{2,20}(\\.\\w{2,10}){1,2})"+"|(400-?\\d{3,7}-?\\d{3,7})";//2:把正则表达式封装成Patter对象Pattern patter= Pattern.compile(regex);//3:通过Patter对象去获取查找内容的匹配器对象Matcher matcher= patter.matcher(data);//4:定义一个循环开始爬取信息while(matcher.find()){String rs= matcher.group();System.out.println(rs);}}
}

 结果:

例子三:正则表达式用于搜索替换,分割内容,需要结合String提供的方法

public String replaceAll(String regex, String replacement)

 按照正则表达式匹配的内容进行替换

public String[] split(String regex)

按照正则表达式匹配的内容进行分割字符串,返回一个字符串数组 

参数regex是 以regex 为分割符

public class test4 {public static void main(String[] args) {//1:把:危险啊afaga阿凡提wwaf别别,中间的非中文字符替换成“-”String data="危险啊afaga阿凡提wwaf别别";String regex="\\w+";String replaced = data.replaceAll(regex, "-");System.out.println(replaced);//2:把:我我喜喜喜喜喜喜欢欢欢你!  替换成 我喜欢你!String data2="我我喜喜喜喜喜喜欢欢欢你";System.out.println(data2.replaceAll("(.)\\1+","$1"));/*1 一个.可以匹配任意通配符,(.)代表一组,即一个字为一组2 \\1表示该组的组号为13 +表示该组出现1次或多次4 $1则可以取到第一组中的内容*///3:把  危险啊afaga阿凡提wwaf别别 中的中文提取出来String data3="危险啊afaga阿凡提wwaf别别";String[] split = data.split("\\w+");//参数regex是以什么为分割符System.out.println(Arrays.toString(split));//[危险啊, 阿凡提, 别别]}
}

 异常:

运行时异常:
RunTimeException及其子类,编译阶段不会出现错误提醒,运行时出现的异常

编译时异常:
编译阶段就会出现错误提醒

异常的处理:

抛出异常(throws)

在方法上使用throws关键字,可以将方法内部的异常抛给调用者处理

捕获异常(try..catch)

直接捕获程序出现的异常

自定义异常:

自定义运行异常 

定义一个异常类来继承RunTimeEexception

重写构造器

通过throw new 异常类(xx) 来创建异常对象并抛出

定义一个异常类:

package yi_chang;
//1:继承RunTimeException类
public class AgeillegalRunTimeException extends  RuntimeException{//2:重写构造器public AgeillegalRunTimeException() {}public AgeillegalRunTimeException(String message) {super(message);}
}

public class test {public static void main(String[] args) {//获取一个合法年龄try {saveAge(200);}catch (Exception e){e.printStackTrace();System.out.println("你输入的年龄不合法");}}public static void saveAge(int age){if(age>=0&&age<=180){System.out.println(age+"被保存");}else{//3:抛出异常对象throw new AgeillegalRunTimeException(" age is illeegal "+age);}}
}

结果:

自定义编译时异常

定义一个异常类继承Exception

重写构造器

 通过throw new 异常类(xx) 来创建异常对象并抛出

 

//1:继承Exception类
public class AgeillegalException extends Exception{//2重写构造器public AgeillegalException() {}public AgeillegalException(String message) {super(message);}}
public class test {public static void main(String[] args) {//获取一个合法年龄/*try {saveAge(200);}catch (Exception e){e.printStackTrace();System.out.println("你输入的年龄不合法");}*/try {saveAge(20);}catch (Exception e){e.printStackTrace();System.out.println("你输入的年龄不合法");}}public static void saveAge(int age) throws AgeillegalException//把该异常抛给调用该方法的地方{//3:抛出异常对象//throw new AgeillegalRunTimeException(" age is illeegal "+age);if(age>=0&&age<=180){System.out.println(age+"被保存");}elsethrow new AgeillegalException(" age is illeegal "+age);}
}

尝试修复异常:
 

public class test2 {public static void main(String[] args) {//尝试修复异常while (true) {try {getMoney();//一旦接收到异常不执行break语句,直到没有异常产生break;} catch (Exception e) {System.out.println("请你输入合适的价格!");}}}public static void getMoney(){Scanner sa=new Scanner(System.in);System.out.println("请输入合适的价格");while(true){double d=sa.nextDouble();if(d>0.0){System.out.println("输入正确");}else{throw new MoneyillegnalRunTimeException("价格不合法");}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/796828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux实践室】Linux高级用户管理实战指南:创建与删除用户组操作详解

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 &#x1f514;Linux创建用户组命令2.1.1 知识点讲解2.1.2…

亲手开发全国海域潮汐表查询微信小程序详情教程及代码

最近在做一个全国海域潮汐表查询&#xff0c;可以为赶海钓鱼爱好者提供涨潮退潮时间表及潮高信息。 下面教大家怎么做一个这样的小程序。 主要功能&#xff0c;根据IP定位地理位置&#xff0c;自动查询出省份或城市的港口&#xff0c;进入后预测7天内港口潮汐表查询。 步骤&…

全坚固笔记本丨工业笔记本丨三防笔记本相较于普通笔记本有哪些优势?

三防笔记本和普通笔记本在设计和性能方面存在显著差异&#xff0c;三防笔记本相较于普通笔记本具备以下优势&#xff1a; 三防笔记本通常采用耐磨、耐摔的材料&#xff0c;并具有坚固的外壳设计&#xff0c;能够承受恶劣环境和意外碰撞&#xff0c;有效保护内部组件不受损坏。相…

【Linux】进程初步理解

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 冯诺依曼体系结构1.1 认识冯诺依曼体系结构1.2 存储金字塔 2. 操作系统2.1 概念2.2 结构2.3 操作系统的管理 3. 进程3.1 进程描述3.2 Linux下的PCB 4. task_struct本身内部属性4.1 启动4.2 进程的创建方式4.2.1 父…

C/C++预处理过程

目录 前言&#xff1a; 1. 预定义符号 2. #define定义常量 3. #define定义宏 4. 带有副作用的宏参数 5. 宏替换的规则 6. 宏和函数的对比 7. #和## 8. 命名约定 9. #undef 10. 命令行定义 11. 条件编译 12. 头文件的包含 13. 其他预处理指令 总结&#x…

谷歌在生成式人工智能领域的挑战与机遇:内部纷争与市场压力下的战略调整

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

nest获取传入接口的参数

代码 Query 可接收接口路径中传入的参数 Body 可接收body中传入的参数 Headers 可接收Headers中传入的参数 import { Controller, Post, Get, Body, Query, Headers } from nestjs/common;// 定义getList参数类型 export class ListDto {readonly page: number;readonly page…

keycloak - 鉴权VUE

目录 一、前言 1、背景 2、实验版本 二、开始干活 1、keycloak配置 a、创建领域(realms) b、创建客户端 c、创建用户、角色 2、vue代码 a、依赖 b、main.js 三、未解决的问题 目录 一、前言 1、背景 2、实验版本 二、开始干活 1、keycloak配置 a、创建领域(r…

SQL Server详细安装使用教程

1.安装环境 现阶段基本不用SQL Server数据库了&#xff0c;看到有这样的分析话题&#xff0c;就把多年前的存货发一下&#xff0c;大家也可以讨论看看&#xff0c;思路上希望还有价值。 SQL Server 2008 R2有32位版本和64位版本&#xff0c;32位版本可以安装在Windows XP及以上…

PyCharm使用指南(个性化设置、开发必备插件、常用快捷键)

&#x1f947;作者简介&#xff1a;CSDN内容合伙人、新星计划第三季Python赛道Top1 &#x1f525;本文已收录于Python系列专栏&#xff1a; 零基础学Python &#x1f4ac;订阅专栏后可私信博主进入Python学习交流群&#xff0c;进群可领取Python视频教程以及Python相关电子书合…

如何在Python中将HTML实体代码转换为文本

在处理HTML数据时&#xff0c;有时会遇到HTML实体代码&#xff0c;这些代码是为了在HTML中表示特殊字符而使用的。例如&#xff0c;<表示小于符号(<)&#xff0c;>表示大于符号(>)&#xff0c;&表示和符号(&)等等。那么当我们在实际操作中可能会遇到下面的…

ebpf+perfetto实现调度延迟记录与展示

1.背景 需要分析生产环境的调度问题,如线程的调度延迟有多少,在哪些时间点延迟比较明显,影响其调度的主要原因是什么?其次,我们希望可以比较直观的展示调度延迟情况。最好能对接perfetto的UI和后处理,因为perfetto已经用于分析比较多的性能数据,可以和调度数据进行整合.我们…

吴恩达:AI 智能体工作流

热门文章推荐&#xff1a; &#xff08;1&#xff09;《为什么很多人工作 3 年 却只有 1 年经验&#xff1f;》&#xff08;2&#xff09;《一文掌握大模型提示词技巧&#xff1a;从战略到战术巧》&#xff08;3&#xff09;《AI 时代&#xff0c;程序员的出路在何方&#xff1…

RGB三通道和灰度值的理解

本文都是来自于chatGPT的回答!!! 目录 Q1:像素具有什么属性?Q2:图像的色彩是怎么实现的?Q3:灰度值和颜色值是一个概念吗?Q4:是不是像素具有灰度值&#xff0c;也有三个颜色分量RGB&#xff1f;Q5:灰度图像是没有色彩的吗&#xff1f;Q6: 彩色图像是既具有灰度值也具有RGB三…

简历复印--原型模式

1.1 夸张的简历 简历的打印。"对编程来说&#xff0c;简单的复制粘贴极有可能造成重复代码的灾难。我所说的意思你根本还没听懂。那就以刚才的例子&#xff0c;我出个需求你写写看&#xff0c;要求有一个简历类&#xff0c;必须要有姓名&#xff0c;可以设置性别和年龄&am…

web自动化测试系列-如何选择实战项目(四)

目录 1.项目安装 2.项目优点 3.项目介绍 3.1 项目介绍 3.3 商品展示 接上文 &#xff1a;web自动化测试系列-页面元素该如何定位?(三)-CSDN博客 在后续的技术操作中都将会使用到项目 &#xff0c;如果你有自己的练手项目 &#xff0c;优先拿自己的项目做练习&#xff0c…

【话题】如何看待那些速成并精通软件书籍的神器

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 背景1. 神话与现实1.1 理论与实践之间的鸿沟1.2 一劳永逸的错觉 2. 速成书籍的优势与局限2.1 优势&#xff1a;2.2 局限&#xff1a; 3. 如何有效利用速成书籍3.1 量力而…

算法——链表(1)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 小比特 大梦想 此篇文章与大家分享链表专题的第一部分 如果有不足的或者错误的请您指出! 1.链表常用技巧总结 1.1引入虚拟头结点 在力扣上,基本提供的链表题目都是"无头的",但是针对无头链表,我们最…

【话题】程序员35岁会失业吗?

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 背景招聘分析一、技术更新换代的挑战二、经验与技术的双重优势三、职业发展的多元化选择四、个人成长与职业规划的平衡五、结语文章推荐 背景 35岁被认为是程序员职业生…

数据治理与大数据平台解决方案(免费|可下载)

1、知识星球下载&#xff1a; 如需下载完整PPTX可编辑源文件&#xff0c;请前往星球获取&#xff1a;https://t.zsxq.com/191Y7dD3p 2、免费领取步骤&#xff1a; 【1】关注公众号 方案驿站 【2】私信发送 数据治理与大数据平台 【3】获取本方案PDF下载链接&#xff0c;直接…