对敏感信息脱敏,如对姓名、证件号码、手机号码、银行卡号码进行脱敏
一、姓名脱敏
1、脱敏规则一:显示姓名中的第一个字,其它用*号代替。
显示姓名中的第一个字,如为英文等其他语种,也是显示第一个字母。其它用*号代替。
① 举例
张* 王** A****
② 实现方法
hideName(name) {if (!name) {return name}return name.replace(/(^.{1})(.+)$/g, (...args) => {let tempStr = '';if (args[2] && args[2].length) {tempStr = Array.from({length: args[2].length + 1,}).join('*');}return args[1] + tempStr;});
}
③ demo
console.log(hideName('小草莓')) // 小**console.log(utils.hideName('Alice')) // A****
2、脱敏规则二:显示姓名中的第一个和最后一个字,其它用*号代替。
显示姓名中的第一个和最后一个字,如为英文等其他语种,也是显示第一个和最后一个字母。其它用*号代替。
① 举例
*三 王*蛋 A****e
② 实现方法
hideName(name) {if (!name) {return name}return name.replace(/(^.{1})(.+)$/g, function (...args) {let tempStr = ''if (args[2] && args[2].length) {tempStr = Array.from({length: args[2].length}).join('*')}let res = name.length === 2 ? ('*' + name.slice(-1)) : (args[1] + tempStr + name.slice(-1))return res})
}
③ demo
console.log(hideName('张三')) // *三console.log(hideName('小草莓')) // 小*莓console.log(utils.hideName('Alice')) // A***e
二、证件号码脱敏
1、对固定位数进行脱敏
显示前2位和后2位,其它用*号代替。
① 举例
32**************1X
② 实现方法
// keepWord是要传入的不脱敏的位数
hideIdCard(idCard, keepWord) {if (!idCard) {return idCard}let digits = keepWord ? keepWord : 2,reg = new RegExp(`(^\\w{${digits}})(\\w+)(\\w{${digits}}$)`, 'g')return idCard.replace(reg, function (...args) {let tempStr = ''if (args[2] && args[2].length) {for (let i = 0, len = args[2].length; i < len; i++) {tempStr += '*'}}return args[1] + tempStr + args[3]})},
③ demo
console.log(hideIdCard('H01234567')) // H0*****67console.log(hideIdCard('FRA123456789107')) // FR***********07console.log(hideIdCard('440582202305254223')) // 44**************23
2、特定规则脱敏
显示前1/3和后1/3段,其他用*号代替
① 举例
H01***567
② 实现方法
hideIdCard(idCard) {if (!idCard) {return idCard}let digits = parseInt(idCard.length/3)let reg = new RegExp(`(^\\w{${digits}})(\\w+)(\\w{${digits}}$)`, 'g')return idCard.replace(reg, function (...args) {let tempStr = ''if (args[2] && args[2].length) {for (let i = 0, len = args[2].length; i < len; i++) {tempStr += '*'}}return args[1] + tempStr + args[3]})},
③ demo
console.log(hideIdCard('H01234567')) // H01***567console.log(hideIdCard('FRA123456789107')) // FRA12*****89107console.log(hideIdCard('440582202305254223')) // 440582******254223
三、手机号码脱敏
显示前3位+****+后4位。
① 举例
137****9050
② 实现方法
hidePhone(phone) {let reg = /(\d{3})\d*(\d{4})/return phone ? phone.replace(reg, '$1****$2') : ''}
③ demo
console.log(hideName('18812345678')) // 188****5678
四、银行卡卡号脱敏
显示前3位+ *(实际位数)+后4位
① 举例
622*********1496
② 实现方法
hideBankAccount(bankAccount) {let reg = /(\d{3})(\d+)(\d{4})/var strLength = bankAccount.match(reg)[2].length;let strValue = ''for(let i = 0; i < strLength; i++) {strValue+='*'}return bankAccount.replace(reg, "$1" + strValue + "$3")}
③ demo
console.log(utils.hideBankAccount('62177777555555553654')) // 621*************3654
相关文章:
对敏感信息脱敏,如对姓名、证件号码、手机号码、银行卡号码进行脱敏
一、姓名脱敏 1、脱敏规则一:显示姓名中的第一个字,其它用*号代替。 显示姓名中的第一个字,如为英文等其他语种,也是显示第一个字母。其它用*号代替。 ① 举例 张* 王** A**** ② 实现方法 hideName(name) {if (!n…...
创建型——单例模式C++实现
单例模式即保证一个类只有一个实例,并提供一个访问该单例的接口。 实例 1.懒汉式 用的时候才创建单例,“懒”。 Singleton.h #ifndef SINGLETON_H_ #define SINGLETON_H_#include <iostream> #include <string> #include <mutex>…...
【华为OD统一考试B卷 | 100分】执行时长(C++ Java JavaScript Python)
文章目录 题目描述输入描述输出描述ACM输入输出模式用例机考代码查重C++javascriptjavapython题目描述 为了充分发挥GPU[算力],需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务。 假设GPU最多一次执行n个任务,…...
操作系统原理 —— 内存管理的概念(十八)
为什么要有内存管理 为什么要对内存进行管理,需要解决什么问题? 要回答这个问题,首先我们需要明白:进程运行时,需放在内存才能运行。比如在执行一个程序时,需将该程序的相关数据与指令装入内存才能运行。…...
GPT-4国内怎么用
GPT-4是OpenAI推出的最新的生成式AI模型,作为ChatGPT的进化版,它在回答准确性、识图能力、生成歌词和创意文本等方面有了显著的提升。然而,由于网络限制,国内用户无法直接访问官方网站。那么,GPT-4在国内如何使用呢&am…...
搭建LightPicture开源免费图床系统「公网远程控制」
文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 转载自cpolar极点云的文章:【搭建私人图床】使用LightPicture开源…...
shell编程lesson06
流控制 while 和 until 循环 #!/bin/bash# while-count:display a series of numbersi1 while [ $i -le 5 ];doecho $ii$((i1)) done echo "Finished!"while命令的语法结构如下: while commands;do commands;done 我们可以使用while循环改进上一节中的…...
国内免费可用的ChatGPT网页版
ChatGPT 一、ChatGPT是个啥?二、16个国内免费的ChatGPT网站。三、ChatGPT使用方式 一、ChatGPT是个啥? chat:表示“聊天”。 GPT:则是Generative、Pre-trained、Transformer的缩写,表示“预训练语言模型”࿰…...
用同样的关键词测试不同的人工智能
测试词汇:用“电商、接口、店群”写一篇关于API接口的推广软文 返回结果: 人工智能1: 电商行业已经进入了全面数字化转型的时代,而API接口技术正是数字化转型的重要组成部分。随着移动端、小程序等终端越来越普及,A…...
shell变量类型含义 长方形面积计算 截取相应字段方法
1.总结变量的类型及含义? 2.实现课堂案例计算长方形面积?(6种方式) 3.定义变量urlhttps://blog.csdn.net/weixin_45029822/article/details/103568815(通过多种方法实现) 1)截取网站访问的协议 …...
Java:从单线程计数器到多线程数据同步synchronized和原子类Atomic
目录 使用单线程使用多线程使用多线程 synchronized使用多线程 原子类AtomicLong 使用单线程 单线程修改计数器的值,没有发生问题,每次运行结果都是10000,不过程序耗时较长 package com.example;/*** 计数器*/ class Counter {private st…...
提前进入行业顶尖阵营:高性能计算实习的竞争优势
如今就业越来越内卷,尤其是计算机行业更是如此。加上GPT以及大模型的加持,各大企业纷纷降本增效,普通程序员逐渐失去竞争力。想要在竞争激烈的就业市场中脱颖而出,提前进入行业顶尖阵营是一个明智的选择。而高性能计算实习将为您提…...
Java程序设计入门教程--标识符和关键字
目录 标识符 标识符的约定 标识符 1. 定义 用来标识类名,变量名,方法名,类型名,数组名,文件名的有效序列称为标识符。简单地说,标识符就是一个名字。 2. 标识符命名规则 (1)大小…...
国产IC芯片自动化测试系统ATECLOUD,助力芯片测试自动化
IC芯片测试成本是影响制造和加工成本的重要因素。在某些情况下,测试成本可能占到器件总成本的40%左右。为了降低测试成本,可以优化测试程序并研发多工位测试。同时,必须平衡良品率和测试时间,以实现最佳的成本控制。本篇文章纳米软…...
BeanFactory和ApplicationContext有什么区别?
BeanFactory和ApplicationContext有什么区别? BeanFactory和ApplicationContext有什么区别? BeanFactory和ApplicationContext有什么区别? BeanFactory (轻量级) 和ApplicationContext(高级特性和框架)是Spring的两大核心接口,都…...
js的BOM对象中的window、location使用
说明:BOM的全称是Browser Object Model,浏览器对象模型,有Window(浏览器窗口)、Navigator(浏览器)、Screen(屏幕)、History(历史记录)和Location&…...
DAY 68 redis高可用的主从复制、哨兵、cluster集群
Redis 高可用 什么是高可用 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服…...
leetcode 1209 学会删除字符串
删除字符串的经典kotlin操作: val mTemp (temp.text).replace(Regex("℃"),"") 以下是题目! 1209. 删除字符串中的所有相邻重复项 II 提示 中等 174 相关企业 给你一个字符串 s,「k 倍重复项删除操作」将会从 s…...
JavaScript6
一、概念 ES6是JavaScript语言的标准。 新特性:let和const命令、变量的解构赋值、字符串函数对象数组等扩展。 环境准备:需要安装NodeJs。 二、新特性 1、let let命令用来声明变量。他的用法类似var,但所声明的变量,只在let命令…...
轻松安装Redis:不用担心配置问题
一、Centos安装Redis 1.安装 EPEL 源 Redis 不在 CentOS 官方仓库中,需要安装 EPEL 源才能访问到 Redis 软件包。运行以下命令安装 EPEL 源: sudo yum install epel-release 2.安装 Redis 使用以下命令安装 Redis: sudo yum install re…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...
13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析
LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...
【题解-洛谷】P10480 可达性统计
题目:P10480 可达性统计 题目描述 给定一张 N N N 个点 M M M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数 N , M N,M N,M,接下来 M M M 行每行两个整数 x , y x,y x,y,表示从 …...
aurora与pcie的数据高速传输
设备:zynq7100; 开发环境:window; vivado版本:2021.1; 引言 之前在前面两章已经介绍了aurora读写DDR,xdma读写ddr实验。这次我们做一个大工程,pc通过pcie传输给fpga,fpga再通过aur…...
