Java笔试面试题AI答之正则表达式(3)

news2024/11/14 5:55:46

文章目录

  • 13. 简述Java String支持哪几种使用正则表达式的方法?
  • 14. 请列举常见校验数字的表达式 ?
  • 15. 请列举常见校验字符的表达式 ?
      • 1. 汉字
      • 2. 英文和数字
      • 3. 特定长度的字符串
      • 4. 由26个英文字母组成的字符串
      • 5. 由数字和26个英文字母组成的字符串
      • 6. 由数字、26个英文字母或者下划线组成的字符串
      • 7. 中文、英文、数字包括下划线
      • 8. 中文、英文、数字但不包括下划线等符号
      • 9. 特殊字符
      • 10. 禁止输入特定字符
  • 16. 请列举常见特殊需求表达式?
      • 1. 电子邮件地址
      • 2. 手机号码
      • 3. 电话号码
      • 4. 身份证号码
      • 5. 帐号合法性校验
      • 6. 密码校验
      • 7. 日期格式
      • 8. 域名
      • 9. Internet URL
      • 10. 腾讯QQ号

13. 简述Java String支持哪几种使用正则表达式的方法?

Java的String类通过其内置方法提供了对正则表达式的支持,允许进行模式匹配、查找、替换等操作。这些功能主要通过java.util.regex包中的类(特别是PatternMatcher类)来支持,但String类也提供了几个便利方法来直接使用正则表达式,主要包括:

  1. matches(String regex)

    • 该方法用于检查字符串是否完全匹配给定的正则表达式。
    • 如果整个区域序列匹配此字符串的正则表达式,则返回true;否则返回false
    • 注意,整个字符串需要匹配正则表达式,而不仅仅是字符串的一部分。
  2. replaceFirst(String regex, String replacement)

    • 使用给定的替换字符串替换此字符串第一次出现的匹配给定正则表达式的子字符串。
    • 如果没有子字符串匹配给定的正则表达式,则不会更改此字符串。
  3. replaceAll(String regex, String replacement)

    • 使用给定的替换字符串替换此字符串所有匹配给定正则表达式的子字符串。
    • 此方法首先会将给定的正则表达式编译成一个模式,然后将此模式与输入字符串进行匹配。

虽然String类本身直接提供了这些方法以支持正则表达式,但在复杂或需要更多控制的情况下(比如获取匹配组),直接使用PatternMatcher类可能会更灵活和强大。例如,通过Pattern.compile(String regex)来编译正则表达式,然后通过得到的Pattern对象调用matcher(CharSequence input)方法创建Matcher对象,之后可以利用Matcher对象的各种方法(如find(), group(), matches()等)进行复杂的模式匹配和文本处理。

14. 请列举常见校验数字的表达式 ?

校验数字(也称为校验码或检查码)是在数据传输或存储过程中,为了检测错误而添加的数字。这些数字通常是基于特定算法对原始数据(如序列号、银行账户号、身份证号等)进行计算得出的。以下是几种常见的校验数字算法及其表达式(以简单形式呈现):

  1. 模10校验(Luhn算法,常用于信用卡号)

    • 原理:从右向左对每一位数字进行加权求和,权重交替为1和2(从右到左的第1位权重为1,第2位为2,第3位为1,以此类推),然后将求和结果对10取模,最后看结果是否为0。如果不是0,则用10减去这个余数,得到的值即为校验位。
    • 表达式示例(伪代码):sum = Σ(digit[i] * (2 - (i % 2) * 2)),其中i从最后一位开始向前计数,然后对sum进行模10操作,非零结果即需要修正的值。
  2. 模11校验(常用于ISBN-10)

    • 原理:类似于模10校验,但权重可能不同,且可能需要处理进位(如加权和大于10时,减去9或进位到下一位)。
    • 表达式示例(伪代码):根据具体的权重分配进行计算,然后对结果进行模11操作,确保结果为0或特定的校验位。
  3. Verhoeff算法

    • 原理:比Luhn算法更复杂,通过一系列的多项式计算和一个2×2的校验矩阵来实现,能更准确地检测输入中的错误。
    • 表达式:难以用简单表达式表示,通常需要通过编程实现算法中定义的多项式乘法和矩阵运算。
  4. 奇偶校验位

    • 原理:在二进制数据序列的末尾添加一个位,使得整个序列中1的总数是奇数(奇校验)或偶数(偶校验)。
    • 表达式:不涉及复杂的计算,而是直接观察数据序列中1的个数,然后决定添加0还是1。
  5. CRC(循环冗余校验)

    • 原理:基于多项式除法的校验算法,通过在数据后面附加校验码来实现。校验码是原始数据多项式除以一个固定的多项式后得到的余数。
    • 表达式:涉及到多项式的乘法、除法和模运算,具体表达式依赖于所选的多项式。

这些算法中的每一种都有其特定的应用场景和优势。选择哪种算法取决于需要校验的数据类型、所需的错误检测能力以及性能考虑。

15. 请列举常见校验字符的表达式 ?

常见校验字符的表达式多种多样,主要用于验证输入字符串的格式是否符合特定规则。以下是一些常见的校验字符表达式:

1. 汉字

  • 表达式:^[\u4e00-\u9fa5]{0,}$
  • 说明:该表达式用于匹配任意长度的汉字字符串。[\u4e00-\u9fa5] 表示Unicode编码中汉字的范围。

2. 英文和数字

  • 表达式:^[A-Za-z0-9]+$^[A-Za-z0-9]{4,40}$
  • 说明:这两个表达式都用于匹配由英文字母和数字组成的字符串。第一个表达式要求至少有一个字符,而第二个表达式则要求字符串长度为4到40个字符之间。

3. 特定长度的字符串

  • 表达式:^.{3,20}$
  • 说明:这个表达式用于匹配任意字符(包括英文字母、数字、特殊字符等)组成的字符串,且长度在3到20个字符之间。

4. 由26个英文字母组成的字符串

  • 表达式:^[A-Z]+$(大写)或 ^[a-z]+$(小写)
  • 说明:这两个表达式分别用于匹配由大写或小写英文字母组成的字符串,且要求至少有一个字符。

5. 由数字和26个英文字母组成的字符串

  • 表达式:^[A-Za-z0-9]+$
  • 说明:该表达式用于匹配由英文字母和数字组成的字符串,且要求至少有一个字符。

6. 由数字、26个英文字母或者下划线组成的字符串

  • 表达式:^\w+$^\w{3,20}$
  • 说明:\w 是一个特殊字符类,等价于 [A-Za-z0-9_],即匹配任何字母数字字符或下划线。这两个表达式分别用于匹配至少有一个字符和长度为3到20个字符的字符串。

7. 中文、英文、数字包括下划线

  • 表达式:^[\u4E00-\u9FA5A-Za-z0-9_]+$
  • 说明:该表达式用于匹配包含汉字、英文字母、数字和下划线的字符串,且要求至少有一个字符。

8. 中文、英文、数字但不包括下划线等符号

  • 表达式:^[\u4E00-\u9FA5A-Za-z0-9]+$^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
  • 说明:这两个表达式都用于匹配包含汉字、英文字母和数字的字符串,但不包含下划线等符号。第一个表达式要求至少有一个字符,而第二个表达式则要求字符串长度为2到20个字符之间。

9. 特殊字符

  • 表达式:[^%&',;=?$\"]+
  • 说明:该表达式用于匹配包含%&';=?$"等特殊字符的字符串。注意,这里的^在方括号[]的开头表示取反,即匹配不在方括号内的字符。

10. 禁止输入特定字符

  • 表达式示例:[^\x22]+(禁止输入双引号"
  • 说明:通过指定不在方括号内的字符来禁止输入,\x22是双引号"的十六进制Unicode编码。

这些表达式可以根据具体需求进行调整和组合,以满足不同的校验要求。

16. 请列举常见特殊需求表达式?

常见特殊需求表达式(正则表达式)涵盖了多个方面,包括但不限于电子邮件地址、电话号码、身份证号码、日期格式等。以下是一些常见的特殊需求表达式示例:

1. 电子邮件地址

  • 表达式^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
  • 说明:该表达式用于匹配标准的电子邮件地址格式。

2. 手机号码

  • 表达式^(13[0-9]|14[5|7]|15[0-9]|18[0-9])\d{8}$
  • 说明:该表达式用于匹配中国大陆的手机号码,包括常见的移动、联通、电信等运营商的号码。注意,随着号码段的更新,表达式可能需要调整。

3. 电话号码

  • 表达式(国内固定电话):\d{3}-\d{8}|\d{4}-\d{7}

  • 说明:该表达式用于匹配国内常见的固定电话号码格式,包括区号和电话号码。

  • 表达式(更灵活的电话号码):^((\d{3,4}-)|\d{3,4})?\d{7,8}$

  • 说明:此表达式支持多种电话号码格式,包括带有区号或不带区号的电话号码,区号可以为3到4位。

4. 身份证号码

  • 表达式(15位或18位):^\d{15}|\d{18}$
  • 表达式(包含校验位X):^(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
  • 说明:身份证号码可以是15位或18位数字,18位身份证号码的最后一位可能是数字或大写字母X(代表10)。

5. 帐号合法性校验

  • 表达式^[a-zA-Z][a-zA-Z0-9_]{4,15}$
  • 说明:该表达式用于校验帐号是否合法,要求以字母开头,长度为5到16个字符,且只能包含字母、数字和下划线。

6. 密码校验

  • 表达式(基本密码):^[a-zA-Z]\w{5,17}$
  • 表达式(强密码,不含特殊字符):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$
  • 表达式(强密码,含特殊字符):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
  • 说明:密码校验表达式根据需求的不同而有所变化,基本密码要求以字母开头,长度为6到18个字符;强密码则要求必须包含大小写字母和数字的组合,且长度和是否包含特殊字符根据具体需求而定。

7. 日期格式

  • 表达式^\d{4}-\d{1,2}-\d{1,2}$
  • 说明:该表达式用于匹配常见的日期格式,如“YYYY-MM-DD”。

8. 域名

  • 表达式[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
  • 说明:该表达式用于匹配域名,包括顶级域名和二级域名等。

9. Internet URL

  • 表达式[a-zA-z]+://[^\s]*^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
  • 说明:该表达式用于匹配Internet URL地址,支持多种协议(如http、https等)和复杂的URL结构。

10. 腾讯QQ号

  • 表达式[1-9][0-9]{4,}
  • 说明:该表达式用于匹配腾讯QQ号,腾讯QQ号从10000开始,且为纯数字。

请注意,由于正则表达式的灵活性和复杂性,上述表达式可能需要根据实际情况进行调整和修改。此外,随着技术的发展和标准的更新,一些表达式可能会变得过时或不再适用。因此,在使用这些表达式时,请务必根据最新的标准和需求进行验证和测试。

答案来自文心一言,仅供参考
在这里插入图片描述

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

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

相关文章

JVM面试(五)垃圾回收机制和算法

概述 了解Java虚拟机的垃圾回收机制(Garbage Collection,简称GC),我们也要像其作者John McCarthy一样,思考一下三个问题: 哪些内存需要回收?什么时候回收?如何回收? 虽…

pytorch+深度学习实现图像的神经风格迁移

本文的完整代码和部署教程已上传至本人的GitHub仓库,欢迎各位朋友批评指正! 1.各代码文件详解 1.1 train.py train.py 文件负责训练神经风格迁移模型。 加载内容和风格图片:使用 utils.load_image 函数加载并预处理内容和风格图片。初始化…

网络攻击全解析:主动、被动与钓鱼式攻击的深度剖析

在当今这个互联网高度普及与深度融合的时代,网络攻击,这一赛博空间的隐形威胁,正以前所未有的频率和复杂度挑战着网络安全乃至国家安全的底线。为了更好地理解并防范这些威胁,本文将深入剖析网络攻击的主要类型——主动攻击、被动…

程序设计基础

一、程序 1.什么是程序? 程序可以看作是对一系列动作的执行过程的描述。 计算机程序是指为了得到某种结果而由计算机等具有信息处理能力的装置执行的代码化指令序列。 程序的几个性质: ● 目的性 ● 分步性 ● 有限性 ● 可操作性 ● 有序性 2…

Splasthop 安全远程访问帮助企业对抗 Cobalt Strike 载荷网络攻击

一、背景 根据 FreeBuf(标题为:潜藏系统2个月未被发现,新型网络攻击瞄准中国高价值目标)和 The Hacker News(标题为:New Cyberattack Targets Chinese-Speaking Businesses with Cobalt Strike Payloads&a…

农产品自主供销系统小程序的设计

管理员账户功能包括:系统首页,个人中心,农产品管理,资讯信息管理,订单管理,资讯回复管理 微信端账号功能包括:系统首页,农产品,购物车,我的 开发系统&#…

接口自动化测试学习 —— Mock服务实现

1.Mock实现原理和实现机制 在某些时候,后端在开发接口的时候,处理逻辑非常复杂,在测试的时候,后端在未完成接口的情况下该如何去测试呢? 我们需要测试,但是有些请求又需要修改一下参数,或者改变…

说明书keithley2420吉时利2410数字源表

说明书keithley2420吉时利2410数字源表 产品概述 Keithley 2420 高压源表是一款 60W 仪器,设计用于提供和测量 5V(源)和 1V(测量)至 60V 的电压和 100pA 至 3A 的电流。2420 型的生产测试应用包括必须在更高电流水平下…

微信和苹果叫板的资本

这两天,关于苹果用户还能不能使用微信这么一个新闻炒得沸沸扬扬的。其实,在很多年前我就说过,腾讯和苹果必有一战。那么这一战到了今天终于到来了。 原因其实也很简单。这个事件的背后,并不是简单的腾讯和苹果彼此之间抽成争夺的问…

pr瘦脸怎么操作?

相信大家平时在拍摄自己的日常生活的时候,通常为了保证视频的清晰度往往都会选择原相机进行拍摄,原相机拍摄自然就会清清楚楚的将我们的真实展现出来,特别是脸部肥大~那么,这么大的一张脸这么可以瘦下去呢?其实使用PR软…

glsl着色器学习(五)

接下来是创建buffer,设置顶点位置,法线,顶点索引等。 const cubeVertexPositions new Float32Array([1, 1, -1,1, 1, 1, 1, -1, 1, 1, -1, -1,-1, 1, 1, -1, 1, -1,-1, -1, -1,-1, -1, 1,-1, 1, 1,1, 1, 1,1, 1, -1,-1, 1, -1,-1, -1, -1,1…

2024.9.3C++

自行实现Mystring类 #include <iostream> #include <cstring> using namespace std;class mystring { public:mystring(){len 0;str nullptr;}mystring(const char* s){len strlen(s);str new char[len 1];strcpy(str, s);}mystring(const mystring& othe…

短时相关+FFT捕获方法的MATLAB仿真

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 短时相关FFT捕获方法的MATLAB仿真 前言短时相关FFT捕获相关原理1、频偏引起的相关损失2、扇贝损失 MATLAB程序获取完整程序 前言 对于算法类的工程&#xff0c;FPGA设计&…

pandas数据处理库使用

文章目录 链接: [原文章链接](https://mp.weixin.qq.com/s?__bizMzkzNjI3ODkyNQ&tempkeyMTI4Nl8zM3FHVFU1NDRDL0p2SkplRTVidmhiNmh1ZWF3YXkwY3VYZlZNaWx0MXowdThFbVRUVEFEdEs5YlU2SUJLcmtXTHZpbnFmR2V6SG1rbGJyd01zYnRkdURWa1ZvNGtIU1piWDd5RFA4OUxkNmlaVmZ1QVpEd2tWR25IR…

MySQL常用窗口函数总和

在 MySQL 中&#xff0c;窗口函数是一类用于在查询结果集中计算值的函数&#xff0c;允许用户根据数据行进行聚合或排序操作&#xff0c;同时保留行的详细信息。窗口函数在分析数据时非常有用&#xff0c;因为它们允许您在不缩小结果集的情况下对数据进行复杂的计算。 常见的窗…

【文献及模型、制图分享】县域城乡融合发展对乡村旅游地实现共同富裕的影响机制——以长三角地区60个典型县为例

文献介绍 乡村旅游地是推动城乡融合、实现共同富裕的关键区域&#xff0c;精准把握县域城乡融合发展多维特征&#xff0c;系统解析其促进乡村旅游地共同富裕的机制&#xff0c;有助于丰富新时代城乡共富理论体系。基于共生理论&#xff0c;构建“共生单元—共生环境—共生结果…

linux~~目录结构远程登录教程(xshell+xftp)

目录 1.目录结构 2.远程登录xshell 2.1所需工具 2.2了解虚拟机IP 2.3查看是否正常连接 2.4xshell进行连接 3.文件传输xftp7 3.1xftp6安装 3.2相关设置 3.3效果展示 3.4文件之间的传输过程 1.目录结构 bin目录里面主要存放这个我们经常使用的指令&#xff0c;例如这个…

PointNet++改进策略 :模块改进 | PAConv,位置自适应卷积提升精度

题目&#xff1a;PAConv: Position Adaptive Convolution with Dynamic Kernel Assembling on Point Clouds来源&#xff1a;CVPR2021机构&#xff1a;香港大学论文&#xff1a;https://arxiv.org/abs/2103.14635代码&#xff1a;https://github.com/CVMI-Lab/PAConv 前言 PA…

从八股文到奇怪的缓存一致性问题

本文是最近看阿里云开发者的一遍奇怪的缓存一致性问题的总结与心得&#xff0c;原文放在文章末尾 缓存穿透、缓存击穿、缓存雪崩 缓存穿透、缓存击穿和缓存雪崩都是系统中可能遇到的问题&#xff0c;特别在高并发场景下。 缓存穿透 与后两者不同&#xff0c;缓存穿透是查询不…

10.10 层次化网络模型和综合布线系统

层次化网络模型 综合布线系统 真题