前言
正则表达式一直都是前端或后端的重中之重,如何用最优雅的代码实现项目的要求也是值得我们好好学习深究的,本篇文章先列举几个常用的表达式,以后有时间还会继续更新。
一、判断手机号&&把手机号中间四位变为*
// 判断是否为11位数手机号 function isPhoneNumber(tel) { let reg =/^1[3-8]d{9}$/; return reg.test(tel); }
// 中间四位变为* function filterPhone(tel){ return tel.toString().replace(/(d{3})(d{4})(d{4})/,"$1****$3"); } console.log(filterPhone(13632888888));//136****8888
二、判断银行卡号&&更改卡号的展示&&把银行卡号除开头和结尾部分变为*(银行卡号长度不一定)
银行卡号就简单的判断长度在16-19了,如果要增加规则也不难,相信小伙伴们都可以做到;
// 判断银行卡号是否合规 function checkBankCard(card){ return /^d{16,19}$/.test(card); }
这个格式我查过我写的正则是最简单快速且复用性高的,不信小伙伴们可以查查别人写的;
// 把银行卡号改为每四位就插入-,要插入空格就换成空格 function filterBankCard(card){ return card.toString().replace(/(d{4})/g,"$1-").replace(/-$/,'');
} console.log(filterBankCard(‘66451125998465472347’));//6645-1125-9984-6547-2347
// 把银行卡号除了开头和结尾的四位数,中间的数字全部变为*号 function filterBankCard2(card){ return card.toString().replace(/^(d{4})(d*)(d{4})$/,(rs,$1,$2,$3)=>{return `${$1} ${$2.replace(/d/g,"*")} ${$3}`}); } console.log(filterBankCard2('6645112599846547234'));//6645 *********** 7234
三、把数字的整数部分变为每隔三位用逗号分隔
例如:123456789.1234 转为 123,456,789.1234,1234567899.12345 转为 1,234,567,899.12345;
写法有两种,第一种:纯手写正则
// 第一种,纯手写正则 function numSplit(num) { // 一开始先转字符串,然后使用replace,正则设置两个规则,$1是读取前面所有整数,$2是读取小数点及后面的数 return num.toString().replace(/(d+)(.d)/g, (rs,$1,$2)=> { // 这里再设置一个规则,把前面读取到的所有整数进行分割,?=是正向前瞻,及?=为必须存在的条件,也就是d每个整数后面必须有后三位整数,满足了才给拼接, return $1.replace(/(d)(?=(d{3})+$)/g, (rs,$1)=> { return $1 + ","; }) + $2;//这里再把前面的.数字拼接回去 }) } // console.log(numSplit(123456789.1234));//123,456,789.1234 // console.log(numSplit(8123456789.1234));//8,123,456,789.1234
第二种,利用toLocaleString,toLocaleString能自动帮我们把整数部分转为逗号拼接,但是小数部分还得自己处理
function numSplit2(num) { return num.toString().replace(/(d+)(.d)/g, (rs,$1,$2)=> { $1.toLocaleString() + $2; }); } // console.log(numSplit(123456789.1234));//123,456,789.1234 // console.log(numSplit(8123456789.1234));//8,123,456,789.1234
四、邮箱验证
规则:以数字字母开头,中间可以是多个数字字母或下划线,然后@后面是数字字母,最后是.加2-4个字母结尾
function checkEmail(email){ let reg =/^[a-zA-Z0-9]w*@[a-zA-Z0-9]+.[a-zA-Z]{2,4}$/; return reg.test(email); } console.log(checkEmail('104413fsdfd@qq.com'));//true
如果做国际邮箱校验,要支持其他各种符号,可以将w换成[!#$%^&*...]来做严谨性判断,具体看业务需求,项目经理会告诉我们规则,稍微改改就行。
总结
本次分享了我们公司项目中常用的几个正则判断,下次再整理其他一些经典的正则判断给大家,如果小伙伴们有需要的,也可以把你想实现的规则私信或留言给我,我下次整理好了一起发出。