前端项目中需要正则表达式处理 业务数据,对姓名 身份证号 手机号 银行卡号 车牌号 邮箱号做隐藏处理,下面记录实现方法 。

一、简单的查阅正则语法

固定格式:/表达式 /修饰符

修饰符可有,可没有,也可组合,有三种

全局匹配,即是匹配一个后继续匹配,直到结束g;

忽略大小写匹配i;

多行匹配,即是遇到换行后不停止匹配,直到结束m

需要的通配符

?匹配前面的子表达式零次或一次,或指明一个非贪婪限定符,要匹配 ? 字符,请使用 \?;

.   匹配除换行符 \n 之外的任何单字符,要匹配 . ,请使用 \. ;

*   匹配前面的子表达式零次或多次,要匹配 * 字符,请使用 \*;

解释语句

.* 匹配任意非\n字符零次或者多次 贪婪匹配,有多少匹配多少

{n} n 是一个非负整数。匹配确定的 n 次;

{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次

{n,} n 是一个非负整数。至少匹配n 次。

?<=n  匹配任何其前紧跟字符n的字符串,返回中不包含n;

() 和 $1搭配使用例如 $1,$2分别匹配第一个括号和第二个括号中的内容

二、敲代码

//隐藏姓名,姓名有两位 三位 甚至四位的,确定位数尤为重要 方便客户模糊确认
//a.substring(0,a.length-1).replace(/(?<=.)./g,"*")+(a.length-1==1?"*":a[a.length-1]);
//输出结果 王*傻 王* 汪* 辣**子 王*二 汪*二
var str_list1=["王二傻","王二","汪汪","辣木洋子","王二二","汪汪二"]
function test1(str_list){str_list.forEach((item,index) =>{var a = item;a = a.a=a.substring(0,a.length-1).replace(/(?<=.)./g,"*")+(a.length-1==1?"*":a[a.length-1]);console.log(a)});
}
test1(str_list1);//隐藏手机中间四位数,当然你可以更改 ‘3’,‘4’以及‘*’的数目,隐藏更多的数字
//手机的位数固定非常好隐藏,通过字符串拼接也可以做到
//a.replace(/(.{3}).*(.{4})/, '$1****$2')
//输出 157****4986
var str_list2=["15755594980"]
function test2(str_list){str_list.forEach((item,index) =>{var a = item;a = a.replace(/(.{3}).*(.{4})/, '$1****$2')console.log(a)});
}
test2(str_list2);//隐藏身份证中出生日期,当然你可以更改 ‘6’,‘4’以及‘*’的数目,隐藏更多的数字
//输出结果 340322********8888
//a.replace(/(.{6}).*(.{4})/, '$1********$2')
str_list3=["340322199909388888"]
function test3(str_list){str_list.forEach((item,index) =>{var a = item;a = a.replace(/(.{6}).*(.{4})/, '$1********$2')console.log(a)});
}
test3(str_list3);//隐藏车牌号中间的4位数字,车牌号有七位和新能源汽车8位,当然你可以更改 ‘2’,‘3’以及‘*’的数目,隐藏更多的数字
//a.replace(/(.{2}).{4}(.{1,2})/, '$1****$2')
//车牌号的位数也非常重要 一个是可以验证 一个是可以区分车类型
var str_list4=["皖ED5555","京A000001"]
function test4(str_list){str_list.forEach((item,index) =>{var a = item;a = a.replace(/(.{2}).{4}(.{1,2})/, '$1****$2')console.log(a)});
}
test4(str_list4);//隐藏银行卡号 中间8数字,银行卡16位 17位 19位,不同位数代表不同类型卡 是有必要确定位数的
//a.replace(/(.{4}).{8}(.{4,})/, '$1********$2')
//输出结果见 下图
var str_list5=["0000000000000000","00000000000000000","0000000000000000000"]
function test5(str_list){str_list.forEach((item,index) =>{var a = item;a = a.replace(/(.{4}).{8}(.{4,})/, '$1********$2')console.log(a)});
}
test5(str_list5);//隐藏邮箱号码 邮箱位数 各种各样 不好隐藏固定的 反正是隐藏为目的不必确定是多少位
//当然也是可以做到确定位数的隐藏只不过比较麻烦
var str_list6=["111111111@qq.com","www22222@163.com"]
function test6(str_list){str_list.forEach((item,index) =>{var a = item;a = a.replace(/(.{2}).*(@.*)/, '$1********$2')console.log(a)});
}
test6(str_list6);

三、参考文档

https://www.jianshu.com/p/488d60349325

https://www.runoob.com/regexp/regexp-syntax.html

JS 正则表达式 隐藏数据相关推荐

  1. 【JavaScript】如何将JS中的数据提交到Servlet服务器中

    功能 用户可以在form表单中输入用户名和密码 点击"改变用户名"."改变密码"."改变隐藏值"按钮后,相应input中的值被改变 注意:此 ...

  2. JS正则表达式大全(整理详细且实用)

    JS正则表达式大全(整理详细且实用) 作者: 字体:[增加 减小] 类型:转载 时间:2013-11-14 我要评论 JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助 ...

  3. 基于echarts+js+fexible.js实现的数据可视化适配案例(附源代码)

    介绍 数据可视化 :借助于图形化手段,清晰有效地传达与沟通信息 ECharts:是一个使用JavaScript实现的开源可视化库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器,底层依赖矢量 ...

  4. html js正则表达式语法,js正则表达式 非中文_js正则表达式匹配中文_js正则表达式语法...

    腾讯云活动聚集了最新的降价打折.特惠折扣等资料,你在这里可以寻找云服务器.域名..小流程等等多种不同产品的促销活动,还有这些品牌的免费试用哦. 因为对js中的正则不太了解,可以参考一下js 中正则表达 ...

  5. JS正则表达式完整版

    目录 引言 第一章 正则表达式字符匹配攻略 1 两种模糊匹配 2. 字符组 3. 量词 4. 多选分支 5. 案例分析 第1章 小结 第二章 正则表达式位置匹配攻略 1. 什么是位置呢? 2. 如何匹 ...

  6. 【JS-正则表达式】JS正则表达式完整教程(略长)

    引言 亲爱的读者朋友,如果你点开了这篇文章,说明你对正则很感兴趣. 想必你也了解正则的重要性,在我看来正则表达式是衡量程序员水平的一个侧面标准. 关于正则表达式的教程,网上也有很多,相信你也看了一些. ...

  7. JS正则表达式完整教程

    引言 亲爱的读者朋友,如果你点开了这篇文章,说明你对正则很感兴趣. 想必你也了解正则的重要性,在我看来正则表达式是衡量程序员水平的一个侧面标准. 关于正则表达式的教程,网上也有很多,相信你也看了一些. ...

  8. JS正则表达式完整教程(略长)

    注:本文已经整理成电子书:<JavaScript正则迷你书> 引言 亲爱的读者朋友,如果你点开了这篇文章,说明你对正则很感兴趣. 想必你也了解正则的重要性,在我看来正则表达式是衡量程序员水 ...

  9. js正则表达式校验数字和小数点的数字

    js正则表达式校验数字和小数点的数字 /** obj 校验的数据 name 前台字段的名字,用于判断后清空,可以不传 */ function checkFloat(obj,name){var re = ...

最新文章

  1. 你要偷偷学会排查线上 CPU 飙高的问题,然后惊艳所有人!
  2. Go 语言编程 — gormigrate GORM 的数据库迁移助手
  3. 谈谈密码学的数学原理
  4. AOP集成防止连续多次点击问题
  5. 工业级光电转换器产品介绍
  6. 不同于NLP,数据驱动、机器学习无法攻克NLU,原因有三
  7. mysql 工时统计_有如下数据,要统计1月3号工时不足8小时的员工姓名及总工时,该sql语句该怎么写(用的mysql哈)...
  8. OpenCV在Linux上的安装及初试
  9. Python验证码识别初探(tesserocr库)
  10. 王朔:中国文化沉淀了大量腐烂变质垃圾
  11. Windows Server 2003 SP2(32位) 中文版 下载地址 光盘整合方法
  12. 用友软件用友二次开发用友单据导入用友凭证导入工具用友EXCEL导入工具EXCEL导入凭证
  13. linux匿名邮件,Linux下用mutt给QQ邮箱发匿名邮件
  14. 简单通用文章系统后台管理模板
  15. NLP(四十二)人物关系分类的再次尝试
  16. flask+pytorch部署深度学习(图像识别)项目
  17. LeetCode接雨水 动态规划
  18. GNS3实验操作(三)
  19. 高频交易(一)应用于高频交易中的对冲策略分析
  20. YOLOv5目标检测全流程:从标注数据到检测模型

热门文章

  1. 平安金融壹账通区块链团队产品负责人王梦寒:区块链应用落地有三大瓶颈
  2. 怎样恢复计算机到桌面,电脑任务栏怎么还原到桌面下方?
  3. 在python中输入10个整数并求出最大值_python练习题 :用户任意输入10个整数到列表中,然后由大到小排列并输出。...
  4. 聊一聊微信小程序包内容
  5. MYSQL添加新用户,为用户创建、分配数据库
  6. [附源码]Java计算机毕业设计SSM蛋糕店会员管理系统
  7. gradle安装和在idea中使用
  8. 关于冒号和双冒号用法
  9. request.getSession.setAttribute和request.setAttribute区别
  10. QT笔记- setAttribute()