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

文章目录

  • 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.xdnf.cn/news/1523877.html

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

相关文章

【电池专题】软包电池封装工序

铝塑膜成型工序冲坑 铝塑膜成型工序,软包电芯可以根据客户的需求设计成不同的尺寸,当外形尺寸设计好后,就需要开具相应的模具,使铝塑膜成型。 成型工序也叫作冲坑,顾名思义,就是用成型模具在加热的情况下,在铝塑膜上冲出一个能够装卷芯的坑,具体的见下图。 …

「Python程序设计」循环控制:for和while循环语句

​我们在实际业务,或者是实际问题,进行数据分析处理的过程中,往往需要对数据集进行处理。 从程序设计的角度来看,一维数组,代表了同一数据类型的相关数据。二维数组,相当于我们excel中的表格,可…

ML17_变分推断Variational Inference

1. KL散度 KL散度(Kullback-Leibler divergence),也称为相对熵(relative entropy),是由Solomon Kullback和Richard Leibler在1951年引入的一种衡量两个概率分布之间差异的方法。KL散度不是一种距离度量&am…

硬件工程师笔试面试知识器件篇——电容

目录 电容 2.1、基础 电容原理图 电容实物图 2.1.1、定义 2.1.2、原理 2.1.3、电容的类型 分类1: 分类2: 2.1.4、电容的应用 2.2、相关问题 2.2.1、电容器的电容值如何测量 2.2.2、不同类型的电容器在实际应用中有那些具体差异 2.2.3、如何选择合适的电容器来满…

模型从 HuggingFace 转存到 ModelScope

由于 HuggingFace 网络访问比较慢,国内通常会使用魔搭下载模型,如果魔搭上还没有,需要从 HuggingFace 准存一下,本文将通过 Colab AliyunPan 的方式下载模型并进行转存。 登录Colab 并运行一下命令 安装依赖包,Hugg…

SpringBoot-读取配置文件方式

目录 前言 一. 使用 ConfigurationProperties 注解读取 二. 使用 Value 注解读取配置文件 三. 使用 Environment 类获取配置属性 前言 Spring Boot提供了多种灵活的方式来读取配置文件,以适应不同的开发和部署需求,SpringBoot启动的时候,…

Datawhale X 李宏毅苹果书 AI夏令营(深度学习进阶)task3

批量归一化 其实归一化简单一点理解就类似于我们学过的数学中的每个数值减去平均值除以标准差。 神经网络中的批量归一化(Batch Normalization,BN)就是其中一个“把山铲平”的想法。不要小看优化这个问题,有时候就算误差表面是凸…

[深度学习][LLM]:浮点数怎么表示,什么是混合精度训练?

混合精度训练 混合精度训练1. 浮点表示法:[IEEE](https://zh.wikipedia.org/wiki/电气电子工程师协会)二进制浮点数算术标准(IEEE 754)1.1 浮点数剖析1.2 举例说明例子 1:例子 2: 1.3 浮点数比较1.4 浮点数的舍入 2. 混合精度训练2.1 为什么需…

【数据结果-二维前缀和】力扣221. 最大正方形

在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。 示例 1: 输入:matrix [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”…

Java 入门指南:Java 并发编程 —— 并发容器 TransferQueue、LinkedTransferQueue、SynchronousQueue

BlockingQueue BlockingQueue 是Java并发包(java.util.concurrent)中提供的一个阻塞队列接口,它继承自 Queue 接口。 BlockingQueue 中的元素采用 FIFO 的原则,支持多线程环境并发访问,提供了阻塞读取和写入的操作&a…

机器学习的入门笔记(第十六周)

本周观看了B站up主霹雳吧啦Wz的图像处理的课程, 课程链接:霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频 下面是本周的所看的课程总结。 MobileNet V2的代码实现 1、定义ConvBNReLU类,将卷积操作,批量归一化操作&…

有三层交换机就不用路由器了?真的假的

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 晚上好,我的网工朋友。 在现代企业网络环境中,三层交换机因其高效的数据包处理能力和较低的延迟而受到广泛欢迎。 然而&…

【TheMisto.AI】Flux最强线稿模型实际效果测评(附安装方法)

原文链接:【TheMisto.AI】Flux最强线稿模型实际效果测评(附安装方法) (chinaz.com) 不知道有没有小伙伴去测试一下哈,上一篇文章用的都是官方提供的参考图,经常关注Flux的小伙伴也知道那些ControlNet买家秀和卖家秀基…

TDesign 微信小程序组件库配置

文章目录 1.安装 npm 包2. 构建 npm3. 构建完成后即可使用 npm 包。4.修改 app.json5.修改 tsconfig.json6.使用组件 1.安装 npm 包 在小程序 package.json 所在的目录中执行命令安装 npm 包: npm install结果报错 PS C:\WeChatProjects\miniprogram-1> npm i…

ARM32开发——(二十三)存储器介绍

1. 存储器分类 存储器按其存储介质特性主要分为“易失性存储器”和“非易失性存储器”两大类。 “易失/非易失”是指存储器断电后, 它存储的数据内容是否会丢失的特性。 在计算机中易失性存储器最典型的代表是内存,非易失性存储器的代表则是硬盘。 2.…

2024年最新版Ajax+Axios 学习【包含原理、Promise、报文、接口等...】

基础知识 AJAX概念 AJAX概念:是浏览器与服务器进行数据通信的技术。 认识URL 定义:统一资源定位符,简称网址,用于访问网络上的资源。 组成: http协议:超文本传输协议,规定浏览器和服务器之…

程序设计—基于JavaWeb的流浪动物救助网站(案例分析)

摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息…

OpenAI API in node gives basic Await error. How do I fix?

题意:OpenAI API 在 Node 中出现基本的 Await 错误。我该如何修复? 问题背景: I literally copied the code from the openAI example and it gives me a remedial Await JS error but I am unsure what it expects me to do. I just want t…

【开源风云】从若依系列脚手架汲取编程之道(三)

📕开源风云系列 🍊本系列将从开源名将若依出发,探究优质开源项目脚手架汲取编程之道。 🍉从不分离版本开写到前后端分离版,再到微服务版本,乃至其中好玩的一系列增强Plus操作。 🍈希望你具备如下…

基于zigbee的蔬菜大棚温湿度监测系统(论文+源码)

1 系统的功能及方案设计 本次基于zigbee的蔬菜大棚温湿度监测系统主要包括传感器节点、协调器节点和监控中心三个功能模块。 其中协调器节点:由cc2530作为主控芯片,负责接收终端一和终端二发送过来的温湿度数据,并将其通过ch340串行转USB输…