常用的正则表达式(一)

前言

  正则表达式一直都是前端或后端的重中之重,如何用最优雅的代码实现项目的要求也是值得我们好好学习深究的,本篇文章先列举几个常用的表达式,以后有时间还会继续更新。

一、判断手机号&&把手机号中间四位变为*

// 判断是否为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换成[!#$%^&*...]来做严谨性判断,具体看业务需求,项目经理会告诉我们规则,稍微改改就行。

总结

  本次分享了我们公司项目中常用的几个正则判断,下次再整理其他一些经典的正则判断给大家,如果小伙伴们有需要的,也可以把你想实现的规则私信或留言给我,我下次整理好了一起发出。

原文地址:https://www.cnblogs.com/zxd66666/p/13020743.html