这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

今天,我们要实现一个很常见并且简单的功能:将手机号中间的几位数变成****

这个功能其实很常见,比如我们微信的账号安全里面显示的手机号、掘金的账号设置里面显示的手机号、支付宝里面的证件号码、各大银行的App卡号.....还有很多有关系到我们私密的地方,在此就不一一例举了,看似简单的功能,我们该如何实现呢?

其实实现的方法有很多,在这里作者将使用js的方式来实现,如有不正确或者需要修改的地方,请多多指教,有更好的方法也可以留言~

下面所使用到的方法,相信学习过javaScript的小伙伴们都非常熟悉,但是你还记得他们的用法嘛?下面作者会对使用到的方法进行简单回顾,不太记得的小伙伴要去回顾一下了呢~

好了,废话少说,开始进入正题。

1. 第一种,使用字符串和数组中常见的几个方法。字符串方法:split()。数组方法:splice(),join()。

在实现之前,我们先一起来回顾一下这几个方法:

  1. split(): 将一个字符串拆分为一个子字符串数组,并返回该数组。

注释:该方法返回新数组,不会更改原始字符串。 注意:如果("")用作分隔符,则会对字符串进行逐个字符拆分。 www.w3school.com.cn/jsref/jsref…

下面是一个例子

const str = “hello”
let arr = str.split("");
console.log(arr); // h,e,l,l,o
  1. splice():方法向数组添加或从数组中删除项目,并返回删除的项目。

注释:splice() 该方法会改变原始数组。www.w3school.com.cn/jsref/jsref…

下面是一个例子:

const arr = ["a","b","c","d"];
arr.splice(1,2,"e","gg","d"); //从数字索引的第一位开始,删除两个内容,向数组添加”e“和”gg“两项。
console.log(arr); // ["a","e","gg","d"];
  1. join():将数组作为一个字符串返回。元素将由指定的分隔符分隔。默认分隔符是逗号 (,)。

注释:join()该方法不会改变原数组

下面是一个例子:

const arr = ['a','b','c','d'];
let result = arr.join();
console.log(result); // a,b,c,d

实现功能:

const telphone = '13300009999';
let telArr = telphone.split();
telArr.splice(3,4,'****');
let result = telArr.join(); //因为不会改变原数组,需要用一个新的变量去接收
console.log(result); // 1330****999

2.第二种,利用字符串的substr()

  1. substr():该方法用于提取字符串的一部分。该方法从指定位置开始,并返回指定数量的字符。

注释:substr() 方法不会更改原始字符串。 下面是一个例子:

const str = 'Hello World';
let result = str.substr(1,4);
console.log(result); //ello

实现功能:

const telphone = '13300009999';
let result = telphone.substr(0,4) + '****' + telphone.substr(8);
console.log(result);// 1330****999 //第二句代码解释:
//使用 `substr` 方法截取电话号码的前四位,然后拼接上'****',
//再拼接上电话号码从索引为8开始的剩余部分,将结果赋值给变量result。

3.第三种,利用字符串的substring()和replace();

  1. substring():该方法用于从字符串中提取指定的索引(位置)之间的字符,并返回子字符串。 注释:substring() 方法不会更改原始字符串。 下面是一个例子:
const str = 'Hello World';
let result = str.substring(1,4);
console.log(result); //ell
  1. replace():该方法在字符串中搜索值或正则表达式;该方法返回已替换值的新字符串。

注释:replace() 方法不会更改原始字符串。 下面是一个例子:

const str = 'Hello World';
let result = str.replace("Hello","Hi");
console.log(result); //Hi World

实现功能:

const telphone = '13300009999';
let result = telphone.replace(telphone.substring(3,8),'****');
console.log(result);// 1330****999

上述的replace()提到了正则表达式,那么我们也可以使用正则表达式来实现www.w3school.com.cn/jsref/jsref… www.w3school.com.cn/js/js_regex…

  1. /d:查找数字
  2. 1,1,1,2,...,$99:与正则规则中的第1到第99个子表达式相匹配的文本。

实现功能:

const telphone = '13300009999';
const reg = /(\d{4})\d{4}(\d{3})/;
let result = telphone.replace(reg,"$1****$2");
console.log(result);// 1330****999

本文转载于:

https://juejin.cn/post/7271058595444752443

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

记录--用js如何实现将手机号中间的几位数字变成****的更多相关文章

  1. AngularJS进阶(十三)JS利用正则表达式校验手机号

    JS利用正则表达式校验手机号 注:请点击此处进行充电! 绪 由于项目需求,需要在前端实现手机号码的校验.当然了,对于基本的格式校验应该放在客户端进行,而不需要再将待校验的手机号发送至服务端,在服务端完 ...

  2. 个人复习记录之-js

    1变量:内存中储存一个数据的储存空间. 使用:声明,赋值,取值.注 不能以数字开头,不能用保留字 *声明提前:在程序正式执行前,都会将所有var声明的变量提前到开始位置,集中创建***赋值留在原地** ...

  3. js正则表达式验证账号手机号电话邮箱

    1.账号 规则:字母.数字.下划线组成,字母开头,4-16位. 表达式:/^[a-zA-z]\w{3,15}$/: 2.手机号 规则:11位数字,以1开头 表达式:/^1\d{10}$/ 3.电话号码 ...

  4. 记录下 js各种证件的正则验证

    身份证 /(^\d{15}$)|(^\d{17}([0-9]|X)$)/    护照 /^[a-zA-Z0-9]{3,21}$/   /^(P\d{7})|(G\d{8})$/    军官证或士兵证 ...

  5. js 正则 以字母开头必须有 大小写字母数字组成 可以有“@"或 ”.“

    js  正则  以字母开头必须有 大小写字母数字组成 可以有“@"或 ”.“ var reg = /^[a-zA-Z]{1}(?=.*[a-z])(?=.*[A-Z])[a-zA-Z\d_@ ...

  6. js验证连续两位数字递增或递减和连续三位数字相同

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  7. js正则判断实现18位数字

    js实现18位数字 var stuCardReg = /^[0-9]{18}/; var stuCard = $('.inp).val();//获取input框中的数值 if (!stuCardReg ...

  8. 记录:sea.js和require.js配置 与 性能对比

    最近有点忙,很久无写博客,记录一下之前的配置require.js和sea.js的配置.(有误有望提出 require.js 文件目录 /app(项目使用js) /lib(require.js jq存放 ...

  9. 记录d3.js 力导向图的平移缩放,类似地图导航点击某一项移动到当前位置

    项目中有用到d3.js用于图结构的查询, 需求如下: 右上角有个模糊搜索功能,查询出来的结果用列表展示 点击列表的某一列,要求画布移动到当前选中的节点的位置,基于画布正中间 搜索出来的结果列表展示用的 ...

  10. [Javascript摸鱼记录] 关于js简单字符删减替换增加插入追加前中后处理

    以前总是怕死js如其名,能让我入坑润不出来,然后最近被迫写点静态html,又要用到数值运算处理, 于是又开启了「好几十个标签栏解决一个问题」的"探索路程",顺便记录一下摸鱼结果希望 ...

随机推荐

  1. 探索C语言中的联合体与枚举:数据多面手的完美组合!

    ​ 欢迎大家来到贝蒂大讲堂 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty's blog 1. 联合体的定义 联合体又叫共用体,它是一种特殊的数据类型,允许您在相同的内存位置存 ...

  2. JS leetcode 寻找数组的中心索引 题解分析

    壹 ❀ 引 今天是的题目来自leetcode的724. 寻找数组的中心索引,做完之后我感觉自己像个憨憨,题目描述如下: 给定一个整数类型的数组 nums,请编写一个能够返回数组"中心索引&q ...

  3. NC204418 新集合

    题目链接 题目 题目描述 集合 \(s\) 中有整数 \(1\) 到 \(n\) ,牛牛想从中挑几个整数组成一个新的集合. 现在牛妹给牛牛加了 \(m\) 个限制 ,每个限制包含两个整数 \(u\) ...

  4. NC16856 [NOI1999]钉子和小球.md

    题目链接 题目 题目描述 有一个三角形木板,竖直立放,上面钉着n(n+1)/2颗钉子,还有(n+1)个格子(当n=5时如图1).每颗钉子和周围的钉子的距离都等于d,每个格子的宽度也都等于d,且除了最左 ...

  5. POJ1080 滑雪

    题目链接 题目 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Mi ...

  6. Windows也能拥有好用的命令行吗?Powershell+Terminal折腾记录(v1.0版本)

    PS:本文写于2021年,现在已经是2024年,有了很多新变化,我在接下来的文章里会继续更新. 前言 Windows一向以图形化操作入门容易著称,所以对于命令行的支持一直为人所诟病,比起Linux或者 ...

  7. SpringCloud Bus动态刷新中心化配置

    说明 上一篇我们介绍了配置中心实战,并留下了一个配置修改后如何实现自动刷新的问题,下面就实际操作一下,首先是手动刷新单个微服务,其次是利用消息总线实现全部刷新. 手动动态刷新 动态刷新是当远程配置文件 ...

  8. Spring Security实现JDBC用户登录认证

    在搭建博客后端服务框架时,我采用邮件注册+Spring Security登录认证方式,结合mysql数据库,给大家展示下具体是怎么整合的. 本篇是基于上一篇:spring boot实现邮箱验证码注册 ...

  9. MySQL写入SQL整个执行流程

    innodb存储引擎中一条sql写入的详细流程     第0步:会先去看缓冲区有没有这条数据,如果有就不进行缓存,直接进入第三步.   第1步:会将要修改的那一行数据所在的一整页加载到缓冲池Buffe ...

  10. 编译安装c2工具sliver以及python 客户端sdk

    背景: 项目需要安装sliver服务端和客户端还有sliver的python sdk: git clone https://github.com/BishopFox/sliver.git cd sli ...