Scala的正则表达式二

news2024/12/27 14:00:47
验证用户名是否合法

规则
1.长度在6-12之间
2.不能数字开头
3.只能包含数字,大小写字母,下划线
def main(args: Array[String]): Unit = {
  val name1 ="1admin"//不合法,是数字开头
  val name2 ="admin123"//合法
  val name3 ="admin"//不合法,长度不够
  val name4 ="ad_123Ab"//合法
  val name5 ="admin123!"//不合法,! 是不允许的

    //通过正则表达式来判断
    val reg ="[a-zA-Z_]\\w{5,11}".r    // /w等价于【0-9A-Za-z_】63个字符
    println(reg.matches(name1)) //matches对字符串做验证,返回boolean值
    println(reg.matches(name2)) //matches对字符串做验证,返回boolean值
     println(reg.matches(name3)) //matches对字符串做验证,返回boolean值
    println(reg.matches(name4)) //matches对字符串做验证,返回boolean值
}
}

 运行结果

替换
把字符串中的手机号打码
类似于138****5678
object test2 {
  def main(args: Array[String]): Unit = {
    var str = "张先生,手机号:13812345678 你买的xxx到了"
    //开始你的代码

    val reg ="(1[3-9]\\d)(\\d{4})(\\d{4})".r
    //reg.replaceAllIn的功能:在目标字符串中,用正则表达式reg去查找,找到之后,用 箭头函数 的返回值
    //来替换.

    //m 就是正则表达式找到的内容
    //如果正则表达式中有(),则 可以通过m.group来找到对应的分组
    val newStr = reg.replaceAllIn(str,(m)=>{
      println(s":${m.group(1)}")
      println(s":${m.group(2)}")
      println(s":${m.group(3)}")
      println("-" * 40)
      m.group(1) + "****" + m.group(3)
    })
    println(newStr)
    }
  }

案例

把字符串中的身份证号打码

object test3 {
  def main(args: Array[String]): Unit = {
    var str = "张先生,ID:420984200406295610"
    val reg ="(\\d{10})(\\d{6})(\\d[\\dX])".r

    val newStr = reg.replaceAllIn(str, (m) => {
      println(s":${m.group(1)}")
      println(s":${m.group(2)}")
      println(s":${m.group(3)}")
      println("-" * 40)
      m.group(1) + "******" + m.group(3)
    })
    println(newStr)
  }


}

 运行结果

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

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

相关文章

【CKA】Kubernetes(k8s)认证之CKA考题讲解

CKA考题讲解 0.考试101 0.1 kubectl命令⾃动补全 在 bash 中设置当前 shell 的⾃动补全&#xff0c;要先安装 bash-completion 包。 echo "source <(kubectl completion bash)" >> ~/.bashrc还可以在补全时为 kubectl 使⽤⼀个速记别名&#xff1a; al…

导入kotlin

android studio 导入kotlin项目 android studio kotlin教程 或者直接拿一个kt文件进来&#xff0c;在顶部会显示一个config&#xff0c;然后设置version&#xff0c;点击OK就可以了自动导了

《CSS 知识点》大屏卡片布局思路:弹性布局 flex-grow

思路 大屏左右两侧高宽一致&#xff0c;内部卡片可按比例设置&#xff01; 使用弹性布局和属性 flex-grow 设置比例&#xff1b;间隔使用 margin-bottom 设置&#xff0c;最后一个卡片不设置&#xff1b; 效果如图 代码说明 CSS代码 26 - 30&#xff0c;左右两侧设置弹性布…

责任链模式的理解和实践

责任链模式&#xff08;Chain of Responsibility&#xff09;是行为型设计模式之一&#xff0c;它通过将多个对象连成一条链&#xff0c;并沿着这条链传递请求&#xff0c;直到有对象处理它为止。这个模式的主要目的是将请求的发送者和接收者解耦&#xff0c;使请求沿着处理链传…

如何在 Ubuntu 上安装开源监控工具 Uptime Kuma

简介 Uptime Kuma&#xff08;或简称 Kuma&#xff09;是一个开源监控工具&#xff0c;用于监控 HTTP、HTTPS、DNS 等协议的服务。Uptime Kuma 提供多种功能&#xff0c;如多语言支持、多个状态页面、代理支持等。 接下来&#xff0c;我将一步一步教大家如何进行安装和部署&am…

go语言zero框架对接阿里云消息队列MQ的rabbit的配置与调用

在 Go 语言中对接阿里云消息队列&#xff08;MQ&#xff09;的 RabbitMQ 配置与调用&#xff0c;首先需要安装和配置相关的 Go 库&#xff0c;并了解如何通过 RabbitMQ 与阿里云消息队列进行交互。 ### 步骤一&#xff1a;安装 RabbitMQ Go 客户端库 阿里云的消息队列&#x…

AttributeError: module ‘cv2.dnn‘ has no attribute ‘DictValue‘如何解决?

AttributeError: module cv2.dnn has no attribute DictValue如何解决&#xff1f; 出现场景出错原因解决方案 出现场景 当在代码中导入opencv的时候&#xff1a;import cv2&#xff0c;出现&#xff1a; 出错原因 查看大家出现的错误&#xff0c;发现是因为opencv版本问题…

京东e卡 h5st 4.96

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我删…

《探索视频数字人:开启未来视界的钥匙》

一、引言 1.1视频数字人技术的崛起 在当今科技飞速发展的时代&#xff0c;视频数字人技术如一颗璀璨的新星&#xff0c;正逐渐成为各领域瞩目的焦点。它的出现&#xff0c;犹如一场科技风暴&#xff0c;彻底改变了传统的视频制作方式&#xff0c;为各个行业带来了前所未有的机…

畅阅读微信小程序+ssm

摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个…

前缀和篇——繁星斗斗数字交织中,觅得效率明月辉光(3)

前言 本篇带来前缀和的最终部分&#xff0c;与之前相同&#xff0c;将结合难度进一步提升的题目进行详细分析讲解&#xff0c;以深化对该算法的理解运用。 一. 和可被k整除的子数组 1.1 题目链接&#xff1a;https://leetcode.cn/problems/subarray-sums-divisible-by-k/des…

【 C++ 入门基础】 —— 双壁传奇C语言和C++的爱恨情仇

C学习笔记&#xff1a; C 进阶之路__Zwy的博客-CSDN博客 各位于晏&#xff0c;亦菲们&#xff0c;请点赞关注&#xff01; 我的个人主页&#xff1a; _Zwy-CSDN博客 目录 1、从C语言到C的进化 1.1、历史渊源 1.2、语法层面的区别和联系 1.2.1、数据类型 1.2.2、函数定…

013路由协议-OSPF

OSPF具有更适用于规模较大的网络环境&#xff0c;收敛更快速、依据带宽来计算路径成本等。 计算方式&#xff1a; 100M/当前端口的带宽 如果小于1就按照1来计算 例如&#xff1a; 当前端口的带宽是1.54M 路径成本 100/1.54 65 当前端口的带宽是 1000M 路径成本 100/100 0.…

最新版Chrome谷歌加载ActiveX控件之金格iWebPDF2018控件

背景 金格iWebPDF2018控件是一款方便用户在线打开PDF文档的控件。 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它不仅可以实现ActiveX控件在现代浏览器上使用&#xff0c;而且集成也…

没有在 SCM 配置或者插件中的 Git 存储库配置错误

问题&#xff1a; jenkins 配置新项目后首次运行报错如下&#xff0c;同时git代码分支无法选择。 已返回默认值 没有在 SCM 配置或者插件中的 Git 存储库配置错误 选项"使用仓库"设置为:"http://xxxx.git 请检查配置 原因&#xff1a; 配置pipeline 脚本时指…

AI时代的开发新纪元:云开发 Copilot

AI时代的开发新纪元&#xff1a;云开发 Copilot 目录 引言&#xff1a;AI时代的开发新纪元低代码与AI的完美融合云开发 Copilot的革命性意义云开发 Copilot 的核心特性解析 快速生成应用功能低代码与AI的深度结合 实战演练&#xff1a;云开发 Copilot 的应用案例 从需求到实现…

微信小程序粘贴剪切板内容

wx.getClipboardData(Object object) 获取系统剪贴板的内容 wx.getClipboardData({success: function (res) {if (res.data) {// 获取成功...} else {wx.showToast({title: "没有粘贴内容",icon: "error",});}},fail: function (res) {wx.showToast({titl…

【PyQt5教程 四】Qt Designer 样式表(styleSheet)实现基本小部件的自定义动态效果和资源浏览器背景添加方法

目录 一、成果演示&#xff1a; 二、样式表的使用方法: &#xff08;1&#xff09;样式表语法和属性&#xff1a; &#xff08;2&#xff09;样式表代码示例&#xff1a; &#xff08;3&#xff09;伪类和状态&#xff1a; &#xff08;4&#xff09;复合选择器&#xff…

推荐系统里面的多任务学习概述

1. 概述 多任务学习&#xff08;multi-task learning&#xff09;&#xff0c;本质上是希望使用一个模型完成多个任务的建模&#xff0c;在推荐系统中&#xff0c;多任务学习一般即指多目标学习&#xff08;multi-label learning&#xff09;&#xff0c;不同目标输入相同的fe…

基于Springboot技术的实验室管理系统【附源码】

基于Springboot技术的实验室管理系统 效果如下&#xff1a; 系统登录页面 实验室信息页面 维修记录页面 轮播图管理页面 公告信息管理页面 知识库页面 实验课程页面 实验室预约页面 研究背景 在科研、教育等领域&#xff0c;实验室是进行实验教学和科学研究的重要场所。随着…